#198 added the API for history of suggested songs by a user

This commit is contained in:
Hamid Reza Mohammadi 2021-09-01 20:13:10 +04:30
parent 5f6a638b82
commit 7016828479
5 changed files with 94 additions and 0 deletions

View File

@ -1090,6 +1090,24 @@ namespace RMuseum.Controllers
return Ok(res.Result);
}
/// <summary>
/// history of suggested songs by a user
/// </summary>
[HttpGet]
[Route("song/user/stats/{userId}")]
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + RMuseumSecurableItem.ReviewSongs)]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(UserSongSuggestionsHistory))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
[ProducesResponseType((int)HttpStatusCode.Forbidden)]
public async Task<IActionResult> GetUserSongsSuggestionsStatistics(Guid userId)
{
var res =
await _ganjoorService.GetUserSongsSuggestionsStatistics(userId);
if (!string.IsNullOrEmpty(res.ExceptionString))
return BadRequest(res.ExceptionString);
return Ok(res.Result);
}
/// <summary>
/// review song
/// </summary>

View File

@ -0,0 +1,18 @@
namespace RMuseum.Models.Ganjoor.ViewModels
{
/// <summary>
/// history of suggested songs by a user
/// </summary>
public class UserSongSuggestionsHistory
{
/// <summary>
/// approved
/// </summary>
public int Approved { get; set; }
/// <summary>
/// rejected
/// </summary>
public int Rejected { get; set; }
}
}

View File

@ -986,6 +986,11 @@
<param name="onlyMine"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.GanjoorController.GetUserSongsSuggestionsStatistics(System.Guid)">
<summary>
history of suggested songs by a user
</summary>
</member>
<member name="M:RMuseum.Controllers.GanjoorController.ReviewSong(RMuseum.Models.Ganjoor.ViewModels.PoemMusicTrackViewModel)">
<summary>
review song
@ -6226,6 +6231,21 @@
alternate text
</summary>
</member>
<member name="T:RMuseum.Models.Ganjoor.ViewModels.UserSongSuggestionsHistory">
<summary>
history of suggested songs by a user
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.UserSongSuggestionsHistory.Approved">
<summary>
approved
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.UserSongSuggestionsHistory.Rejected">
<summary>
rejected
</summary>
</member>
<member name="T:RMuseum.Models.ImportJob.ImportJob">
<summary>
Import Job
@ -7761,6 +7781,13 @@
<param name="suggestedById"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IGanjoorService.GetUserSongsSuggestionsStatistics(System.Guid)">
<summary>
get track of user song suggestions
</summary>
<param name="userId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IGanjoorService.SuggestSong(System.Guid,RMuseum.Models.Ganjoor.ViewModels.PoemMusicTrackViewModel)">
<summary>
suggest song
@ -9422,6 +9449,13 @@
<param name="suggestedById"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.GanjoorService.GetUserSongsSuggestionsStatistics(System.Guid)">
<summary>
get track of user song suggestions
</summary>
<param name="userId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.GanjoorService.ReviewSong(RMuseum.Models.Ganjoor.ViewModels.PoemMusicTrackViewModel)">
<summary>
review song

View File

@ -212,6 +212,13 @@ namespace RMuseum.Services
/// <returns></returns>
Task<RServiceResult<PoemMusicTrackViewModel>> GetNextUnreviewedSong(int skip, Guid suggestedById);
/// <summary>
/// get track of user song suggestions
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
Task<RServiceResult<UserSongSuggestionsHistory>> GetUserSongsSuggestionsStatistics(Guid userId);
/// <summary>
/// suggest song
/// </summary>

View File

@ -1848,6 +1848,23 @@ namespace RMuseum.Services.Implementation
return new RServiceResult<PoemMusicTrackViewModel>(null); //not found
}
/// <summary>
/// get track of user song suggestions
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public async Task<RServiceResult<UserSongSuggestionsHistory>> GetUserSongsSuggestionsStatistics(Guid userId)
{
return new RServiceResult<UserSongSuggestionsHistory>
(
new UserSongSuggestionsHistory()
{
Approved = await _context.GanjoorPoemMusicTracks.Where(p => p.SuggestedById == userId && p.Approved == true).CountAsync(),
Rejected = await _context.GanjoorPoemMusicTracks.Where(p => p.SuggestedById == userId && p.Rejected == true).CountAsync()
}
);
}
/// <summary>
/// review song
/// </summary>