docs: #287 added API for displaying the list of user related poem songs suggestions

This commit is contained in:
Hamid Reza Mohammadi 2022-02-23 19:50:54 +03:30
parent 5e2a51c9ff
commit 0d0b9b420a
4 changed files with 99 additions and 2 deletions

View File

@ -1318,6 +1318,33 @@ namespace RMuseum.Controllers
return Ok(res.Result);
}
/// <summary>
/// user suggested songs
/// </summary>
/// <param name="paging"></param>
/// <returns></returns>
[HttpGet]
[Route("song/mysuggestions")]
[Authorize]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<GanjoorPoemCorrectionViewModel>))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> GetUserSuggestedSongs([FromQuery] PagingParameterModel paging)
{
Guid userId =
new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
var res =
await _ganjoorService.GetUserSuggestedSongs(userId, paging);
// Paging Header
HttpContext.Response.Headers.Add("paging-headers", JsonConvert.SerializeObject(res.Result.PagingMeta));
if (!string.IsNullOrEmpty(res.ExceptionString))
return BadRequest(res.ExceptionString);
return Ok(res.Result.Items);
}
/// <summary>
/// review song
/// </summary>

View File

@ -1128,6 +1128,13 @@
history of suggested songs by a user
</summary>
</member>
<member name="M:RMuseum.Controllers.GanjoorController.GetUserSuggestedSongs(RSecurityBackend.Models.Generic.PagingParameterModel)">
<summary>
user suggested songs
</summary>
<param name="paging"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.GanjoorController.ReviewSong(RMuseum.Models.Ganjoor.ViewModels.PoemMusicTrackViewModel)">
<summary>
review song
@ -10219,6 +10226,14 @@
<param name="poemId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IGanjoorService.GetUserSuggestedSongs(System.Guid,RSecurityBackend.Models.Generic.PagingParameterModel)">
<summary>
user suggested songs
</summary>
<param name="userId"></param>
<param name="paging"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IGanjoorService.GetUserCorrections(System.Guid,RSecurityBackend.Models.Generic.PagingParameterModel)">
<summary>
get user or all corrections
@ -12388,6 +12403,14 @@
<param name="trackType"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.GanjoorService.GetUserSuggestedSongs(System.Guid,RSecurityBackend.Models.Generic.PagingParameterModel)">
<summary>
user suggested songs
</summary>
<param name="userId"></param>
<param name="paging"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.GanjoorService.SuggestSong(System.Guid,RMuseum.Models.Ganjoor.ViewModels.PoemMusicTrackViewModel)">
<summary>
suggest song

View File

@ -181,6 +181,14 @@ namespace RMuseum.Services
/// <returns></returns>
Task<RServiceResult<GanjoorPoemCorrectionViewModel>> GetLastUnreviewedUserCorrectionForPoem(Guid userId, int poemId);
/// <summary>
/// user suggested songs
/// </summary>
/// <param name="userId"></param>
/// <param name="paging"></param>
/// <returns></returns>
Task<RServiceResult<(PaginationMetadata PagingMeta, PoemMusicTrackViewModel[] Items)>> GetUserSuggestedSongs(Guid userId, PagingParameterModel paging);
/// <summary>
/// get user or all corrections
/// </summary>

View File

@ -8,6 +8,7 @@ using System.Data;
using System.Linq;
using System.Threading.Tasks;
using DNTPersianUtils.Core;
using RSecurityBackend.Services.Implementation;
namespace RMuseum.Services.Implementation
{
@ -64,6 +65,42 @@ namespace RMuseum.Services.Implementation
);
}
/// <summary>
/// user suggested songs
/// </summary>
/// <param name="userId"></param>
/// <param name="paging"></param>
/// <returns></returns>
public async Task<RServiceResult<(PaginationMetadata PagingMeta, PoemMusicTrackViewModel[] Items)>> GetUserSuggestedSongs(Guid userId, PagingParameterModel paging)
{
var source = from track in
_context.GanjoorPoemMusicTracks
where track.SuggestedById == userId
orderby track.SongOrder
select
new PoemMusicTrackViewModel()
{
Id = track.Id,
PoemId = track.PoemId,
TrackType = track.TrackType,
ArtistName = track.ArtistName,
ArtistUrl = track.ArtistUrl,
AlbumName = track.AlbumName,
AlbumUrl = track.AlbumUrl,
TrackName = track.TrackName,
TrackUrl = track.TrackUrl,
Description = track.Description,
BrokenLink = track.BrokenLink,
GolhaTrackId = track.GolhaTrackId == null ? 0 : (int)track.GolhaTrackId,
Approved = track.Approved,
Rejected = track.Rejected,
RejectionCause = track.RejectionCause
};
return new RServiceResult<(PaginationMetadata, PoemMusicTrackViewModel[])>
(await QueryablePaginator<PoemMusicTrackViewModel>.Paginate(source, paging));
}
/// <summary>
/// suggest song
@ -423,7 +460,7 @@ namespace RMuseum.Services.Implementation
}
).AsNoTracking().SingleOrDefaultAsync()
) ;
);
}
/// <summary>
@ -433,7 +470,7 @@ namespace RMuseum.Services.Implementation
/// <returns></returns>
public async Task<RServiceResult<PoemMusicTrackViewModel>> ModifyPublishedSong(PoemMusicTrackViewModel song)
{
if (!song.Approved )
if (!song.Approved)
return new RServiceResult<PoemMusicTrackViewModel>(null, "!song.Approved ");
@ -483,5 +520,7 @@ namespace RMuseum.Services.Implementation
}
}
}
}