#11 changing uploads GET api return type from dynamic to predefined structure

This commit is contained in:
Hamid Reza Mohammadi 2020-10-30 20:40:59 +03:30
parent 4c9756deee
commit ef070fecfb
5 changed files with 107 additions and 9 deletions

View File

@ -6,6 +6,7 @@ using RMuseum.Models.Auth.Memory;
using RMuseum.Models.GanjoorAudio;
using RMuseum.Models.GanjoorAudio.ViewModels;
using RMuseum.Models.UploadSession;
using RMuseum.Models.UploadSession.ViewModels;
using RMuseum.Services;
using RSecurityBackend.Models.Generic;
using RSecurityBackend.Services;
@ -155,7 +156,7 @@ namespace RMuseum.Controllers
/// <returns></returns>
[HttpGet("uploads")]
[Authorize]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<dynamic>))]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<UploadedItemViewModel>))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
[ProducesResponseType((int)HttpStatusCode.Forbidden, Type = typeof(string))]

View File

@ -0,0 +1,50 @@
using System;
namespace RMuseum.Models.UploadSession.ViewModels
{
/// <summary>
/// Uploaded Item View Model
/// </summary>
public class UploadedItemViewModel
{
/// <summary>
/// filename
/// </summary>
public string FileName { get; set; }
/// <summary>
/// process result
/// </summary>
public bool ProcessResult { get; set; }
/// <summary>
/// process result message
/// </summary>
public string ProcessResultMsg { get; set; }
/// <summary>
/// Upload End Time
/// </summary>
public DateTime UploadEndTime { get; set; }
/// <summary>
/// Upload User Name
/// </summary>
public string UserName { get; set; }
/// <summary>
/// Process Start Time
/// </summary>
public DateTime ProcessStartTime { get; set; }
/// <summary>
/// progress progress
/// </summary>
public int ProcessProgress { get; set; }
/// <summary>
/// process end time
/// </summary>
public DateTime ProcessEndTime { get; set; }
}
}

View File

@ -3400,6 +3400,51 @@
Audio
</summary>
</member>
<member name="T:RMuseum.Models.UploadSession.ViewModels.UploadedItemViewModel">
<summary>
Uploaded Item View Model
</summary>
</member>
<member name="P:RMuseum.Models.UploadSession.ViewModels.UploadedItemViewModel.FileName">
<summary>
filename
</summary>
</member>
<member name="P:RMuseum.Models.UploadSession.ViewModels.UploadedItemViewModel.ProcessResult">
<summary>
process result
</summary>
</member>
<member name="P:RMuseum.Models.UploadSession.ViewModels.UploadedItemViewModel.ProcessResultMsg">
<summary>
process result message
</summary>
</member>
<member name="P:RMuseum.Models.UploadSession.ViewModels.UploadedItemViewModel.UploadEndTime">
<summary>
Upload End Time
</summary>
</member>
<member name="P:RMuseum.Models.UploadSession.ViewModels.UploadedItemViewModel.UserName">
<summary>
Upload User Name
</summary>
</member>
<member name="P:RMuseum.Models.UploadSession.ViewModels.UploadedItemViewModel.ProcessStartTime">
<summary>
Process Start Time
</summary>
</member>
<member name="P:RMuseum.Models.UploadSession.ViewModels.UploadedItemViewModel.ProcessProgress">
<summary>
progress progress
</summary>
</member>
<member name="P:RMuseum.Models.UploadSession.ViewModels.UploadedItemViewModel.ProcessEndTime">
<summary>
process end time
</summary>
</member>
<member name="T:RMuseum.Services.IArtifactService">
<summary>
Artifact Item Service

View File

@ -2,6 +2,7 @@
using RMuseum.Models.GanjoorAudio;
using RMuseum.Models.GanjoorAudio.ViewModels;
using RMuseum.Models.UploadSession;
using RMuseum.Models.UploadSession.ViewModels;
using RSecurityBackend.Models.Generic;
using System;
using System.Threading.Tasks;
@ -117,7 +118,7 @@ namespace RMuseum.Services
/// <param name="paging"></param>
/// <param name="userId">if userId is empty all user uploads would be returned</param>
/// <returns></returns>
Task<RServiceResult<(PaginationMetadata PagingMeta, dynamic[] Items)>> GetUploads(PagingParameterModel paging, Guid userId);
Task<RServiceResult<(PaginationMetadata PagingMeta, UploadedItemViewModel[] Items)>> GetUploads(PagingParameterModel paging, Guid userId);
/// <summary>
/// retry publish unpublished narrations

View File

@ -10,6 +10,7 @@ using RMuseum.Models.Ganjoor;
using RMuseum.Models.GanjoorAudio;
using RMuseum.Models.GanjoorAudio.ViewModels;
using RMuseum.Models.UploadSession;
using RMuseum.Models.UploadSession.ViewModels;
using RSecurityBackend.Models.Auth.Db;
using RSecurityBackend.Models.Auth.ViewModels;
using RSecurityBackend.Models.Generic;
@ -911,7 +912,7 @@ namespace RMuseum.Services.Implementation
/// <param name="paging"></param>
/// <param name="userId">if userId is empty all user uploads would be returned</param>
/// <returns></returns>
public async Task<RServiceResult<(PaginationMetadata PagingMeta, dynamic[] Items)>> GetUploads(PagingParameterModel paging, Guid userId)
public async Task<RServiceResult<(PaginationMetadata PagingMeta, UploadedItemViewModel[] Items)>> GetUploads(PagingParameterModel paging, Guid userId)
{
try
{
@ -922,20 +923,20 @@ namespace RMuseum.Services.Implementation
on file.UploadSessionId equals session.Id
where userId == Guid.Empty || session.UseId == userId
orderby session.UploadEndTime descending
select new
{ file.FileName, file.ProcessResult, file.ProcessResultMsg, session.UploadEndTime, session.User.UserName, session.ProcessStartTime, session.ProcessProgress, session.ProcessEndTime }
select new UploadedItemViewModel()
{ FileName = file.FileName, ProcessResult = file.ProcessResult, ProcessResultMsg = file.ProcessResultMsg, UploadEndTime = session.UploadEndTime, UserName = session.User.UserName, ProcessStartTime = session.ProcessStartTime, ProcessProgress = session.ProcessProgress, ProcessEndTime = session.ProcessEndTime }
).AsQueryable();
(PaginationMetadata PagingMeta, dynamic[] Items) paginatedResult =
await QueryablePaginator<dynamic>.Paginate(source, paging);
(PaginationMetadata PagingMeta, UploadedItemViewModel[] Items) paginatedResult =
await QueryablePaginator<UploadedItemViewModel>.Paginate(source, paging);
return new RServiceResult<(PaginationMetadata PagingMeta, dynamic[] Items)>((paginatedResult.PagingMeta, paginatedResult.Items));
return new RServiceResult<(PaginationMetadata PagingMeta, UploadedItemViewModel[] Items)>((paginatedResult.PagingMeta, paginatedResult.Items));
}
catch (Exception exp)
{
return new RServiceResult<(PaginationMetadata PagingMeta, dynamic[] Items)>((PagingMeta: null, Items: null), exp.ToString());
return new RServiceResult<(PaginationMetadata PagingMeta, UploadedItemViewModel[] Items)>((PagingMeta: null, Items: null), exp.ToString());
}
}