#66 suggest song api
This commit is contained in:
parent
db1ef736dd
commit
2e8dd59d5d
@ -7,6 +7,9 @@ using RMuseum.Models.GanjoorAudio.ViewModels;
|
||||
using RMuseum.Models.GanjoorIntegration.ViewModels;
|
||||
using RMuseum.Services;
|
||||
using RSecurityBackend.Models.Generic;
|
||||
using RSecurityBackend.Services;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
@ -249,6 +252,37 @@ namespace RMuseum.Controllers
|
||||
return Ok(res.Result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// suggest song for poem
|
||||
/// </summary>
|
||||
/// <param name="song"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
[HttpPost]
|
||||
[Route("song")]
|
||||
[Authorize]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(PoemMusicTrackViewModel))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.Forbidden)]
|
||||
public async Task<IActionResult> SuggestSong([FromBody] PoemMusicTrackViewModel song)
|
||||
{
|
||||
Guid userId =
|
||||
new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
|
||||
Guid sessionId =
|
||||
new Guid(User.Claims.FirstOrDefault(c => c.Type == "SessionId").Value);
|
||||
RServiceResult<bool> sessionCheckResult = await _appUserService.SessionExists(userId, sessionId);
|
||||
if (!string.IsNullOrEmpty(sessionCheckResult.ExceptionString))
|
||||
{
|
||||
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||
}
|
||||
|
||||
var res =
|
||||
await _ganjoorService.SuggestSong(userId, song);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
return Ok(res.Result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get a random poem from hafez
|
||||
/// </summary>
|
||||
@ -327,13 +361,20 @@ namespace RMuseum.Controllers
|
||||
|
||||
protected readonly IGanjoorService _ganjoorService;
|
||||
|
||||
/// <summary>
|
||||
/// IAppUserService instance
|
||||
/// </summary>
|
||||
protected IAppUserService _appUserService;
|
||||
|
||||
/// <summary>
|
||||
/// constructor
|
||||
/// </summary>
|
||||
/// <param name="ganjoorService"></param>
|
||||
public GanjoorController(IGanjoorService ganjoorService)
|
||||
/// <param name="appUserService"></param>
|
||||
public GanjoorController(IGanjoorService ganjoorService, IAppUserService appUserService)
|
||||
{
|
||||
_ganjoorService = ganjoorService;
|
||||
_appUserService = appUserService;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -707,6 +707,13 @@
|
||||
<param name="id"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.SuggestSong(RMuseum.Models.Ganjoor.ViewModels.PoemMusicTrackViewModel)">
|
||||
<summary>
|
||||
suggest song for poem
|
||||
</summary>
|
||||
<param name="song"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.Faal">
|
||||
<summary>
|
||||
get a random poem from hafez
|
||||
@ -736,11 +743,17 @@
|
||||
Ganjoor Service
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.#ctor(RMuseum.Services.IGanjoorService)">
|
||||
<member name="F:RMuseum.Controllers.GanjoorController._appUserService">
|
||||
<summary>
|
||||
IAppUserService instance
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.#ctor(RMuseum.Services.IGanjoorService,RSecurityBackend.Services.IAppUserService)">
|
||||
<summary>
|
||||
constructor
|
||||
</summary>
|
||||
<param name="ganjoorService"></param>
|
||||
<param name="appUserService"></param>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.ImageController.Get(System.Guid,System.String)">
|
||||
<summary>
|
||||
@ -4172,7 +4185,7 @@
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.PoemMusicTrackViewModel.PoemId">
|
||||
<summary>
|
||||
poem id
|
||||
</summary>
|
||||
</summary>a
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.PoemMusicTrackViewModel.TrackType">
|
||||
<summary>
|
||||
@ -5509,6 +5522,14 @@
|
||||
<param name="id"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.SuggestSong(System.Guid,RMuseum.Models.Ganjoor.ViewModels.PoemMusicTrackViewModel)">
|
||||
<summary>
|
||||
suggest song
|
||||
</summary>
|
||||
<param name="userId"></param>
|
||||
<param name="song"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.Faal">
|
||||
<summary>
|
||||
get a random poem from hafez
|
||||
@ -6325,6 +6346,14 @@
|
||||
<param name="navigation"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.SuggestSong(System.Guid,RMuseum.Models.Ganjoor.ViewModels.PoemMusicTrackViewModel)">
|
||||
<summary>
|
||||
suggest song
|
||||
</summary>
|
||||
<param name="userId"></param>
|
||||
<param name="song"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.Faal">
|
||||
<summary>
|
||||
get a random poem from hafez
|
||||
|
||||
@ -3,6 +3,7 @@ using RMuseum.Models.Ganjoor.ViewModels;
|
||||
using RMuseum.Models.GanjoorAudio.ViewModels;
|
||||
using RMuseum.Models.GanjoorIntegration.ViewModels;
|
||||
using RSecurityBackend.Models.Generic;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace RMuseum.Services
|
||||
@ -105,6 +106,14 @@ namespace RMuseum.Services
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<PoemRelatedImage[]>> GetPoemImages(int id);
|
||||
|
||||
/// <summary>
|
||||
/// suggest song
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="song"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<PoemMusicTrackViewModel>> SuggestSong(Guid userId, PoemMusicTrackViewModel song);
|
||||
|
||||
/// <summary>
|
||||
/// get a random poem from hafez
|
||||
/// </summary>
|
||||
|
||||
@ -721,6 +721,59 @@ namespace RMuseum.Services.Implementation
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// suggest song
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="song"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<PoemMusicTrackViewModel>> SuggestSong(Guid userId, PoemMusicTrackViewModel song)
|
||||
{
|
||||
try
|
||||
{
|
||||
var alreadySuggestedSong = await _context.GanjoorPoemMusicTracks.Where(t => t.PoemId == song.PoemId && t.TrackType == song.TrackType && t.TrackUrl == song.TrackUrl).FirstOrDefaultAsync();
|
||||
if(alreadySuggestedSong != null)
|
||||
{
|
||||
return new RServiceResult<PoemMusicTrackViewModel>(null, "این آهنگ پیشتر برای این شعر پیشنهاد داده شده است.");
|
||||
}
|
||||
|
||||
|
||||
|
||||
var sug =
|
||||
new PoemMusicTrack()
|
||||
{
|
||||
TrackType = song.TrackType,
|
||||
PoemId = song.PoemId,
|
||||
ArtistName = song.ArtistName,
|
||||
ArtistUrl = song.ArtistUrl,
|
||||
AlbumName = song.AlbumName,
|
||||
AlbumUrl = song.AlbumUrl,
|
||||
TrackName = song.TrackName,
|
||||
TrackUrl = song.TrackUrl,
|
||||
SuggestedById = userId
|
||||
};
|
||||
|
||||
GanjoorSinger singer = await _context.GanjoorSingers.Where(s => s.Url == song.ArtistUrl).FirstOrDefaultAsync();
|
||||
if (singer != null)
|
||||
{
|
||||
sug.SingerId = singer.Id;
|
||||
}
|
||||
|
||||
_context.GanjoorPoemMusicTracks.Add
|
||||
(
|
||||
sug
|
||||
);
|
||||
|
||||
await _context.SaveChangesAsync();
|
||||
song.Id = sug.Id;
|
||||
return new RServiceResult<PoemMusicTrackViewModel>(song);
|
||||
}
|
||||
catch(Exception exp)
|
||||
{
|
||||
return new RServiceResult<PoemMusicTrackViewModel>(null, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get a random poem from hafez
|
||||
/// </summary>
|
||||
@ -1519,6 +1572,7 @@ namespace RMuseum.Services.Implementation
|
||||
/// </summary>
|
||||
protected readonly IBackgroundTaskQueue _backgroundTaskQueue;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// constructor
|
||||
|
||||
Loading…
Reference in New Issue
Block a user