GET API برای پروفایلهای خوانش کاربران

This commit is contained in:
Hamid Reza Mohammadi 2020-09-20 21:56:00 +04:30
parent aa67d2e1eb
commit 20a1fa53d2
5 changed files with 197 additions and 1 deletions

View File

@ -126,6 +126,24 @@ namespace RMuseum.Controllers
return BadRequest(res.ExceptionString);
}
[HttpGet("profiles")]
[Authorize]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<UserNarrationProfileViewModel>))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
[ProducesResponseType((int)HttpStatusCode.Forbidden, Type = typeof(string))]
public async Task<IActionResult> GetUserNarrationProfiles()
{
Guid loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
var res = await _audioService.GetUserNarrationProfiles(loggedOnUserId);
if (!string.IsNullOrEmpty(res.ExceptionString))
return BadRequest(res.ExceptionString);
return Ok(res.Result);
}
/// <summary>
/// constructor

View File

@ -0,0 +1,75 @@
using RSecurityBackend.Models.Auth.ViewModels;
using System;
namespace RMuseum.Models.GanjoorAudio.ViewModels
{
/// <summary>
/// UserNarrationProfile View Model
/// </summary>
public class UserNarrationProfileViewModel
{
/// <summary>
/// constructor
/// </summary>
/// <param name="src"></param>
public UserNarrationProfileViewModel(UserNarrationProfile src)
{
Id = src.Id;
User = src.User == null ? null : new PublicRAppUser(src.User);
UserId = src.UserId;
FileSuffixWithoutDash = src.FileSuffixWithoutDash;
ArtistName = src.ArtistName;
ArtistUrl = src.ArtistUrl;
AudioSrc = src.AudioSrc;
AudioSrcUrl = src.AudioSrcUrl;
IsDefault = src.IsDefault;
}
/// <summary>
/// Id
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// User
/// </summary>
public PublicRAppUser User { get; set; }
/// <summary>
/// UserId
/// </summary>
public Guid UserId { get; set; }
/// <summary>
/// this would be appended to audio files names prefixed by a dash to make them unique and specfic to user
/// filenames usually would look like {GanjoorPostId}-{FileSuffixWithoutDash}.{ext}
/// for example 2200-hrm.xml
/// </summary>
public string FileSuffixWithoutDash { get; set; }
/// <summary>
/// artist name
/// </summary>
public string ArtistName { get; set; }
/// <summary>
/// artist url
/// </summary>
public string ArtistUrl { get; set; }
/// <summary>
/// audio src
/// </summary>
public string AudioSrc { get; set; }
/// <summary>
/// audio src url
/// </summary>
public string AudioSrcUrl { get; set; }
/// <summary>
/// is default
/// </summary>
public bool IsDefault { get; set; }
}
}

View File

@ -2000,6 +2000,64 @@
Review Status
</summary>
</member>
<member name="T:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel">
<summary>
UserNarrationProfile View Model
</summary>
</member>
<member name="M:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.#ctor(RMuseum.Models.GanjoorAudio.UserNarrationProfile)">
<summary>
constructor
</summary>
<param name="src"></param>
</member>
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.Id">
<summary>
Id
</summary>
</member>
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.User">
<summary>
User
</summary>
</member>
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.UserId">
<summary>
UserId
</summary>
</member>
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.FileSuffixWithoutDash">
<summary>
this would be appended to audio files names prefixed by a dash to make them unique and specfic to user
filenames usually would look like {GanjoorPostId}-{FileSuffixWithoutDash}.{ext}
for example 2200-hrm.xml
</summary>
</member>
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.ArtistName">
<summary>
artist name
</summary>
</member>
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.ArtistUrl">
<summary>
artist url
</summary>
</member>
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.AudioSrc">
<summary>
audio src
</summary>
</member>
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.AudioSrcUrl">
<summary>
audio src url
</summary>
</member>
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.IsDefault">
<summary>
is default
</summary>
</member>
<member name="T:RMuseum.Models.GanjoorIntegration.GanjoorLink">
<summary>
ganjoor link for artifacts and items
@ -3481,6 +3539,13 @@
<param name="id"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IAudioNarrationService.GetUserNarrationProfiles(System.Guid)">
<summary>
Get User Profiles
</summary>
<param name="userId"></param>
<returns></returns>
</member>
<member name="T:RMuseum.Services.Implementation.ArtifactService">
<summary>
IArtifactService implementation
@ -4238,6 +4303,13 @@
<param name="id"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.AudioNarrationService.GetUserNarrationProfiles(System.Guid)">
<summary>
Get User Profiles
</summary>
<param name="userId"></param>
<returns></returns>
</member>
<member name="P:RMuseum.Services.Implementation.AudioNarrationService.Configuration">
<summary>
Configuration

View File

@ -58,5 +58,13 @@ namespace RMuseum.Services
/// <returns></returns>
Task<RServiceResult<UploadSession>> GetUploadSession(Guid id);
/// <summary>
/// Get User Profiles
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
Task<RServiceResult<UserNarrationProfileViewModel[]>> GetUserNarrationProfiles(Guid userId);
}
}

View File

@ -432,6 +432,29 @@ namespace RMuseum.Services.Implementation
}
}
/// <summary>
/// Get User Profiles
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public async Task<RServiceResult<UserNarrationProfileViewModel[]>> GetUserNarrationProfiles(Guid userId)
{
try
{
List<UserNarrationProfileViewModel> profiles = new List<UserNarrationProfileViewModel>();
foreach(UserNarrationProfile p in (await _context.UserNarrationProfiles.Include(p => p.User).Where(p => p.UserId == userId).ToArrayAsync()))
{
profiles.Add(new UserNarrationProfileViewModel(p));
}
return new RServiceResult<UserNarrationProfileViewModel[]>(profiles.ToArray());
}
catch (Exception exp)
{
return new RServiceResult<UserNarrationProfileViewModel[]>(null, exp.ToString());
}
}
/// <summary>
/// Configuration