diff --git a/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs b/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs index 327a28e8f..a8f064eb3 100644 --- a/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs +++ b/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs @@ -21,7 +21,6 @@ using Squidex.Domain.Apps.Entities.Assets.Repositories; using Squidex.Infrastructure; using Squidex.Infrastructure.Assets; using Squidex.Infrastructure.Commands; -using Squidex.Infrastructure.Reflection; using Squidex.Pipeline; namespace Squidex.Areas.Api.Controllers.Assets @@ -93,11 +92,7 @@ namespace Squidex.Areas.Api.Controllers.Assets await assetRepository.QueryAsync(App.Id, idsList) : await assetRepository.QueryAsync(App.Id, Request.QueryString.ToString()); - var response = new AssetsDto - { - Total = assets.Total, - Items = assets.Select(x => SimpleMapper.Map(x, new AssetDto { FileType = x.FileName.FileType() })).ToArray() - }; + var response = AssetsDto.FromAssets(assets); Response.Headers["Surrogate-Key"] = string.Join(" ", response.Items.Select(x => x.Id)); @@ -127,7 +122,7 @@ namespace Squidex.Areas.Api.Controllers.Assets return NotFound(); } - var response = SimpleMapper.Map(entity, new AssetDto { FileType = entity.FileName.FileType() }); + var response = AssetDto.FromAsset(entity); Response.Headers["ETag"] = entity.Version.ToString(); Response.Headers["Surrogate-Key"] = entity.Id.ToString(); @@ -161,7 +156,7 @@ namespace Squidex.Areas.Api.Controllers.Assets var context = await CommandBus.PublishAsync(command); var result = context.Result>(); - var response = AssetCreatedDto.Create(command, result); + var response = AssetCreatedDto.FromCommand(command, result); return StatusCode(201, response); } @@ -217,9 +212,7 @@ namespace Squidex.Areas.Api.Controllers.Assets [ApiCosts(1)] public async Task PutAsset(string app, Guid id, [FromBody] AssetUpdateDto request) { - var command = SimpleMapper.Map(request, new RenameAsset { AssetId = id }); - - await CommandBus.PublishAsync(command); + await CommandBus.PublishAsync(request.ToCommand(id)); return NoContent(); } diff --git a/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetCreatedDto.cs b/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetCreatedDto.cs index 921868399..086d74421 100644 --- a/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetCreatedDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetCreatedDto.cs @@ -68,7 +68,7 @@ namespace Squidex.Areas.Api.Controllers.Assets.Models /// public long Version { get; set; } - public static AssetCreatedDto Create(CreateAsset command, EntityCreatedResult result) + public static AssetCreatedDto FromCommand(CreateAsset command, EntityCreatedResult result) { var response = new AssetCreatedDto { diff --git a/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetDto.cs b/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetDto.cs index 33400ea80..0521a1f59 100644 --- a/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetDto.cs @@ -8,7 +8,9 @@ using System; using System.ComponentModel.DataAnnotations; using NodaTime; +using Squidex.Domain.Apps.Entities.Assets; using Squidex.Infrastructure; +using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Assets.Models { @@ -88,5 +90,10 @@ namespace Squidex.Areas.Api.Controllers.Assets.Models /// The version of the asset. /// public long Version { get; set; } + + public static AssetDto FromAsset(IAssetEntity asset) + { + return SimpleMapper.Map(asset, new AssetDto { FileType = asset.FileName.FileType() }); + } } } diff --git a/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetUpdateDto.cs b/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetUpdateDto.cs index ca143f5cf..ce03091f7 100644 --- a/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetUpdateDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetUpdateDto.cs @@ -5,7 +5,10 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== +using System; using System.ComponentModel.DataAnnotations; +using Squidex.Domain.Apps.Entities.Assets.Commands; +using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Assets.Models { @@ -16,5 +19,10 @@ namespace Squidex.Areas.Api.Controllers.Assets.Models /// [Required] public string FileName { get; set; } + + public RenameAsset ToCommand(Guid id) + { + return SimpleMapper.Map(this, new RenameAsset { AssetId = id }); + } } } diff --git a/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetsDto.cs b/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetsDto.cs index 576db9b8a..6e81fa113 100644 --- a/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetsDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetsDto.cs @@ -5,18 +5,29 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== +using System.ComponentModel.DataAnnotations; +using System.Linq; +using Squidex.Domain.Apps.Entities.Assets; +using Squidex.Infrastructure; + namespace Squidex.Areas.Api.Controllers.Assets.Models { public sealed class AssetsDto { /// - /// The total number of assets. + /// The assets. /// - public long Total { get; set; } + [Required] + public AssetDto[] Items { get; set; } /// - /// The assets. + /// The total number of assets. /// - public AssetDto[] Items { get; set; } + public long Total { get; set; } + + public static AssetsDto FromAssets(IResultList assets) + { + return new AssetsDto { Total = assets.Total, Items = assets.Select(AssetDto.FromAsset).ToArray() }; + } } }