#11 changing uploads api
This commit is contained in:
parent
bcd2db2e2f
commit
a1864b9084
@ -77,7 +77,7 @@ namespace RMuseum.Controllers
|
||||
/// <returns></returns>
|
||||
[HttpGet("uploads")]
|
||||
[Authorize]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<UploadSessionViewModel>))]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<dynamic>))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.Forbidden, Type = typeof(string))]
|
||||
|
||||
|
||||
@ -139,6 +139,11 @@ namespace RMuseum.DbContext
|
||||
/// </summary>
|
||||
public DbSet<UploadSession> UploadSessions { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Uploaded files
|
||||
/// </summary>
|
||||
public DbSet<UploadSessionFile> UploadedFiles { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// User Narration Profiles
|
||||
/// </summary>
|
||||
|
||||
1406
RMuseum/Migrations/20201004155741_UploadedFiles.Designer.cs
generated
Normal file
1406
RMuseum/Migrations/20201004155741_UploadedFiles.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
89
RMuseum/Migrations/20201004155741_UploadedFiles.cs
Normal file
89
RMuseum/Migrations/20201004155741_UploadedFiles.cs
Normal file
@ -0,0 +1,89 @@
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
namespace RMuseum.Migrations
|
||||
{
|
||||
public partial class UploadedFiles : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_UploadSessionFile_UploadSessions_UploadSessionId",
|
||||
table: "UploadSessionFile");
|
||||
|
||||
migrationBuilder.DropPrimaryKey(
|
||||
name: "PK_UploadSessionFile",
|
||||
table: "UploadSessionFile");
|
||||
|
||||
migrationBuilder.RenameTable(
|
||||
name: "UploadSessionFile",
|
||||
newName: "UploadedFiles");
|
||||
|
||||
migrationBuilder.RenameIndex(
|
||||
name: "IX_UploadSessionFile_UploadSessionId",
|
||||
table: "UploadedFiles",
|
||||
newName: "IX_UploadedFiles_UploadSessionId");
|
||||
|
||||
migrationBuilder.AlterColumn<Guid>(
|
||||
name: "UploadSessionId",
|
||||
table: "UploadedFiles",
|
||||
nullable: false,
|
||||
oldClrType: typeof(Guid),
|
||||
oldType: "uniqueidentifier",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.AddPrimaryKey(
|
||||
name: "PK_UploadedFiles",
|
||||
table: "UploadedFiles",
|
||||
column: "Id");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_UploadedFiles_UploadSessions_UploadSessionId",
|
||||
table: "UploadedFiles",
|
||||
column: "UploadSessionId",
|
||||
principalTable: "UploadSessions",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_UploadedFiles_UploadSessions_UploadSessionId",
|
||||
table: "UploadedFiles");
|
||||
|
||||
migrationBuilder.DropPrimaryKey(
|
||||
name: "PK_UploadedFiles",
|
||||
table: "UploadedFiles");
|
||||
|
||||
migrationBuilder.RenameTable(
|
||||
name: "UploadedFiles",
|
||||
newName: "UploadSessionFile");
|
||||
|
||||
migrationBuilder.RenameIndex(
|
||||
name: "IX_UploadedFiles_UploadSessionId",
|
||||
table: "UploadSessionFile",
|
||||
newName: "IX_UploadSessionFile_UploadSessionId");
|
||||
|
||||
migrationBuilder.AlterColumn<Guid>(
|
||||
name: "UploadSessionId",
|
||||
table: "UploadSessionFile",
|
||||
type: "uniqueidentifier",
|
||||
nullable: true,
|
||||
oldClrType: typeof(Guid));
|
||||
|
||||
migrationBuilder.AddPrimaryKey(
|
||||
name: "PK_UploadSessionFile",
|
||||
table: "UploadSessionFile",
|
||||
column: "Id");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_UploadSessionFile_UploadSessions_UploadSessionId",
|
||||
table: "UploadSessionFile",
|
||||
column: "UploadSessionId",
|
||||
principalTable: "UploadSessions",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -764,14 +764,14 @@ namespace RMuseum.Migrations
|
||||
b.Property<string>("ProcessResultMsg")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<Guid?>("UploadSessionId")
|
||||
b.Property<Guid>("UploadSessionId")
|
||||
.HasColumnType("uniqueidentifier");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("UploadSessionId");
|
||||
|
||||
b.ToTable("UploadSessionFile");
|
||||
b.ToTable("UploadedFiles");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("RSecurityBackend.Models.Audit.Db.REvent", b =>
|
||||
@ -1355,7 +1355,9 @@ namespace RMuseum.Migrations
|
||||
{
|
||||
b.HasOne("RMuseum.Models.UploadSession.UploadSession", null)
|
||||
.WithMany("UploadedFiles")
|
||||
.HasForeignKey("UploadSessionId");
|
||||
.HasForeignKey("UploadSessionId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("RSecurityBackend.Models.Auth.Db.RAppUser", b =>
|
||||
|
||||
@ -13,6 +13,11 @@ namespace RMuseum.Models.UploadSession
|
||||
/// </summary>
|
||||
public Guid Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Upload Session Id
|
||||
/// </summary>
|
||||
public Guid UploadSessionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// ContentDisposition
|
||||
/// </summary>
|
||||
|
||||
@ -1,81 +0,0 @@
|
||||
using Org.BouncyCastle.Crypto.Tls;
|
||||
using RSecurityBackend.Models.Auth.ViewModels;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace RMuseum.Models.UploadSession.ViewModels
|
||||
{
|
||||
/// <summary>
|
||||
/// Upload session view model
|
||||
/// </summary>
|
||||
public class UploadSessionViewModel
|
||||
{
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
/// <param name="src"></param>
|
||||
public UploadSessionViewModel(UploadSession src)
|
||||
{
|
||||
Id = src.Id;
|
||||
SessionType = src.SessionType;
|
||||
User = new PublicRAppUser(src.User);
|
||||
UploadStartTime = src.UploadStartTime;
|
||||
UploadEndTime = src.UploadEndTime;
|
||||
ProcessStartTime = src.ProcessStartTime;
|
||||
ProcessEndTime = src.ProcessEndTime;
|
||||
ProcessProgress = src.ProcessProgress;
|
||||
Status = src.Status;
|
||||
UploadedFiles = src.UploadedFiles;
|
||||
}
|
||||
/// <summary>
|
||||
/// Id
|
||||
/// </summary>
|
||||
public Guid Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Session Type
|
||||
/// </summary>
|
||||
public UploadSessionType SessionType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// User
|
||||
/// </summary>
|
||||
public PublicRAppUser User { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Upload Start Time
|
||||
/// </summary>
|
||||
public DateTime UploadStartTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Upload End Time
|
||||
/// </summary>
|
||||
public DateTime UploadEndTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Process Start Time
|
||||
/// </summary>
|
||||
public DateTime ProcessStartTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Process End Time
|
||||
/// </summary>
|
||||
public DateTime ProcessEndTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Process Progress
|
||||
/// </summary>
|
||||
public int ProcessProgress { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Status
|
||||
/// </summary>
|
||||
public UploadSessionProcessStatus Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Uploaded Files
|
||||
/// </summary>
|
||||
public ICollection<UploadSessionFile> UploadedFiles { get; set; }
|
||||
}
|
||||
}
|
||||
@ -860,6 +860,11 @@
|
||||
Upload Sessions
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.DbContext.RMuseumDbContext.UploadedFiles">
|
||||
<summary>
|
||||
Uploaded files
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.DbContext.RMuseumDbContext.UserNarrationProfiles">
|
||||
<summary>
|
||||
User Narration Profiles
|
||||
@ -2929,6 +2934,11 @@
|
||||
Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.UploadSession.UploadSessionFile.UploadSessionId">
|
||||
<summary>
|
||||
Upload Session Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.UploadSession.UploadSessionFile.ContentDisposition">
|
||||
<summary>
|
||||
ContentDisposition
|
||||
|
||||
@ -94,7 +94,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, UploadSessionViewModel[] Items)>> GetUploads(PagingParameterModel paging, Guid userId);
|
||||
Task<RServiceResult<(PaginationMetadata PagingMeta, dynamic[] Items)>> GetUploads(PagingParameterModel paging, Guid userId);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -605,33 +605,39 @@ 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, UploadSessionViewModel[] Items)>> GetUploads(PagingParameterModel paging, Guid userId)
|
||||
public async Task<RServiceResult<(PaginationMetadata PagingMeta, dynamic[] Items)>> GetUploads(PagingParameterModel paging, Guid userId)
|
||||
{
|
||||
try
|
||||
{
|
||||
var source =
|
||||
|
||||
(
|
||||
from file in _context.UploadedFiles
|
||||
join session in _context.UploadSessions.Include(s => s.User)
|
||||
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 }
|
||||
).AsQueryable();
|
||||
|
||||
/*
|
||||
_context.UploadSessions
|
||||
.Include(u => u.User)
|
||||
.Include(u => u.UploadedFiles)
|
||||
.Where(u => userId == Guid.Empty || u.UseId == userId )
|
||||
.OrderByDescending(u => u.UploadEndTime)
|
||||
.AsQueryable();
|
||||
.AsQueryable();*/
|
||||
|
||||
(PaginationMetadata PagingMeta, dynamic[] Items) paginatedResult =
|
||||
await QueryablePaginator<dynamic>.Paginate(source, paging);
|
||||
|
||||
(PaginationMetadata PagingMeta, UploadSession[] Items) paginatedResult =
|
||||
await QueryablePaginator<UploadSession>.Paginate(source, paging);
|
||||
|
||||
|
||||
List<UploadSessionViewModel> res = new List<UploadSessionViewModel>();
|
||||
foreach (UploadSession upload in paginatedResult.Items)
|
||||
{
|
||||
res.Add(new UploadSessionViewModel(upload));
|
||||
}
|
||||
|
||||
return new RServiceResult<(PaginationMetadata PagingMeta, UploadSessionViewModel[] Items)>((paginatedResult.PagingMeta, res.ToArray()));
|
||||
return new RServiceResult<(PaginationMetadata PagingMeta, dynamic[] Items)>((paginatedResult.PagingMeta, paginatedResult.Items));
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<(PaginationMetadata PagingMeta, UploadSessionViewModel[] Items)>((PagingMeta: null, Items: null), exp.ToString());
|
||||
return new RServiceResult<(PaginationMetadata PagingMeta, dynamic[] Items)>((PagingMeta: null, Items: null), exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user