diff --git a/src/Squidex/Areas/Api/Controllers/Apps/AppClientsController.cs b/src/Squidex/Areas/Api/Controllers/Apps/AppClientsController.cs index 92b2fce2c..dff6510a1 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/AppClientsController.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/AppClientsController.cs @@ -10,10 +10,8 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using NSwag.Annotations; using Squidex.Areas.Api.Controllers.Apps.Models; -using Squidex.Domain.Apps.Core.Apps; using Squidex.Domain.Apps.Entities.Apps.Commands; using Squidex.Infrastructure.Commands; -using Squidex.Infrastructure.Reflection; using Squidex.Pipeline; namespace Squidex.Areas.Api.Controllers.Apps @@ -50,7 +48,7 @@ namespace Squidex.Areas.Api.Controllers.Apps [ApiCosts(0)] public IActionResult GetClients(string app) { - var response = App.Clients.Select(x => SimpleMapper.Map(x.Value, new ClientDto { Id = x.Key })).ToList(); + var response = App.Clients.Select(ClientDto.FromKvp).ToList(); Response.Headers["ETag"] = App.Version.ToString(); @@ -76,11 +74,11 @@ namespace Squidex.Areas.Api.Controllers.Apps [ApiCosts(1)] public async Task PostClient(string app, [FromBody] CreateAppClientDto request) { - var command = SimpleMapper.Map(request, new AttachClient()); + var command = request.ToCommand(); await CommandBus.PublishAsync(command); - var response = SimpleMapper.Map(command, new ClientDto { Name = command.Id, Permission = AppClientPermission.Editor }); + var response = ClientDto.FromCommand(command); return CreatedAtAction(nameof(GetClients), new { app }, response); } @@ -104,7 +102,7 @@ namespace Squidex.Areas.Api.Controllers.Apps [ApiCosts(1)] public async Task PutClient(string app, string clientId, [FromBody] UpdateAppClientDto request) { - await CommandBus.PublishAsync(SimpleMapper.Map(request, new UpdateClient { Id = clientId })); + await CommandBus.PublishAsync(request.ToCommand(clientId)); return NoContent(); } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/AppContributorsController.cs b/src/Squidex/Areas/Api/Controllers/Apps/AppContributorsController.cs index 7de8d6932..edd1a33f1 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/AppContributorsController.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/AppContributorsController.cs @@ -5,7 +5,6 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== -using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using NSwag.Annotations; @@ -13,7 +12,6 @@ using Squidex.Areas.Api.Controllers.Apps.Models; using Squidex.Domain.Apps.Entities.Apps.Commands; using Squidex.Domain.Apps.Entities.Apps.Services; using Squidex.Infrastructure.Commands; -using Squidex.Infrastructure.Reflection; using Squidex.Pipeline; namespace Squidex.Areas.Api.Controllers.Apps @@ -50,9 +48,7 @@ namespace Squidex.Areas.Api.Controllers.Apps [ApiCosts(0)] public IActionResult GetContributors(string app) { - var contributors = App.Contributors.Select(x => new ContributorDto { ContributorId = x.Key, Permission = x.Value }).ToArray(); - - var response = new ContributorsDto { Contributors = contributors, MaxContributors = appPlansProvider.GetPlanForApp(App).MaxContributors }; + var response = ContributorsDto.FromApp(App, appPlansProvider); Response.Headers["ETag"] = App.Version.ToString(); @@ -76,11 +72,11 @@ namespace Squidex.Areas.Api.Controllers.Apps [ApiCosts(1)] public async Task PostContributor(string app, [FromBody] AssignAppContributorDto request) { - var command = SimpleMapper.Map(request, new AssignContributor()); + var command = request.ToCommand(); var context = await CommandBus.PublishAsync(command); var result = context.Result>(); - var response = new ContributorAssignedDto { ContributorId = result.IdOrValue }; + var response = ContributorAssignedDto.FromId(result.IdOrValue); return Ok(response); } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/AppLanguagesController.cs b/src/Squidex/Areas/Api/Controllers/Apps/AppLanguagesController.cs index 070dea103..a2bcfdab4 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/AppLanguagesController.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/AppLanguagesController.cs @@ -6,17 +6,13 @@ // ========================================================================== using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using NSwag.Annotations; using Squidex.Areas.Api.Controllers.Apps.Models; -using Squidex.Domain.Apps.Core.Apps; using Squidex.Domain.Apps.Entities.Apps.Commands; using Squidex.Infrastructure; using Squidex.Infrastructure.Commands; -using Squidex.Infrastructure.Reflection; using Squidex.Pipeline; namespace Squidex.Areas.Api.Controllers.Apps @@ -50,14 +46,7 @@ namespace Squidex.Areas.Api.Controllers.Apps [ApiCosts(0)] public IActionResult GetLanguages(string app) { - var response = App.LanguagesConfig.OfType().Select(x => - SimpleMapper.Map(x.Language, - new AppLanguageDto - { - IsMaster = x == App.LanguagesConfig.Master, - IsOptional = x.IsOptional, - Fallback = x.LanguageFallbacks.ToList() - })).OrderByDescending(x => x.IsMaster).ThenBy(x => x.Iso2Code).ToList(); + var response = AppLanguageDto.FromApp(App); Response.Headers["ETag"] = App.Version.ToString(); @@ -82,9 +71,11 @@ namespace Squidex.Areas.Api.Controllers.Apps [ApiCosts(1)] public async Task PostLanguage(string app, [FromBody] AddAppLanguageDto request) { - await CommandBus.PublishAsync(SimpleMapper.Map(request, new AddLanguage())); + var command = request.ToCommand(); - var response = SimpleMapper.Map(request.Language, new AppLanguageDto { Fallback = new List() }); + await CommandBus.PublishAsync(command); + + var response = AppLanguageDto.FromCommand(command); return CreatedAtAction(nameof(GetLanguages), new { app }, response); } @@ -106,7 +97,7 @@ namespace Squidex.Areas.Api.Controllers.Apps [ApiCosts(1)] public async Task Update(string app, string language, [FromBody] UpdateAppLanguageDto request) { - await CommandBus.PublishAsync(SimpleMapper.Map(request, new UpdateLanguage { Language = language })); + await CommandBus.PublishAsync(request.ToCommand(ParseLanguage(language))); return NoContent(); } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/AppPatternsController.cs b/src/Squidex/Areas/Api/Controllers/Apps/AppPatternsController.cs index c33cbcf5a..c1cb2c82a 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/AppPatternsController.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/AppPatternsController.cs @@ -13,7 +13,6 @@ using NSwag.Annotations; using Squidex.Areas.Api.Controllers.Apps.Models; using Squidex.Domain.Apps.Entities.Apps.Commands; using Squidex.Infrastructure.Commands; -using Squidex.Infrastructure.Reflection; using Squidex.Pipeline; namespace Squidex.Areas.Api.Controllers.Apps @@ -50,9 +49,9 @@ namespace Squidex.Areas.Api.Controllers.Apps [ApiCosts(0)] public IActionResult GetPatterns(string app) { - var response = - App.Patterns.Select(x => SimpleMapper.Map(x.Value, new AppPatternDto { PatternId = x.Key })) - .OrderBy(x => x.Name).ToList(); + var response = App.Patterns.Select(AppPatternDto.FromKvp).OrderBy(x => x.Name).ToList(); + + Response.Headers["ETag"] = App.Version.ToString(); return Ok(response); } @@ -73,11 +72,11 @@ namespace Squidex.Areas.Api.Controllers.Apps [ApiCosts(1)] public async Task PostPattern(string app, [FromBody] UpdatePatternDto request) { - var command = SimpleMapper.Map(request, new AddPattern()); + var command = request.ToAddCommand(); await CommandBus.PublishAsync(command); - var response = SimpleMapper.Map(request, new AppPatternDto { PatternId = command.PatternId }); + var response = AppPatternDto.FromCommand(command); return CreatedAtAction(nameof(GetPatterns), new { app }, response); } @@ -99,9 +98,7 @@ namespace Squidex.Areas.Api.Controllers.Apps [ApiCosts(1)] public async Task UpdatePattern(string app, Guid id, [FromBody] UpdatePatternDto request) { - var command = SimpleMapper.Map(request, new UpdatePattern { PatternId = id }); - - await CommandBus.PublishAsync(command); + await CommandBus.PublishAsync(request.ToUpdateCommand(id)); return NoContent(); } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/AppsController.cs b/src/Squidex/Areas/Api/Controllers/Apps/AppsController.cs index 7304b11e3..4fb62c39d 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/AppsController.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/AppsController.cs @@ -11,12 +11,10 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using NSwag.Annotations; using Squidex.Areas.Api.Controllers.Apps.Models; -using Squidex.Domain.Apps.Core.Apps; using Squidex.Domain.Apps.Entities; using Squidex.Domain.Apps.Entities.Apps.Commands; using Squidex.Domain.Apps.Entities.Apps.Services; using Squidex.Infrastructure.Commands; -using Squidex.Infrastructure.Reflection; using Squidex.Infrastructure.Security; using Squidex.Pipeline; @@ -60,19 +58,9 @@ namespace Squidex.Areas.Api.Controllers.Apps { var subject = HttpContext.User.OpenIdSubject(); - var apps = await appProvider.GetUserApps(subject); + var entities = await appProvider.GetUserApps(subject); - var response = apps.Select(a => - { - var dto = SimpleMapper.Map(a, new AppDto()); - - dto.Permission = a.Contributors[subject]; - - dto.PlanName = appPlansProvider.GetPlanForApp(a)?.Name; - dto.PlanUpgrade = appPlansProvider.GetPlanUpgradeForApp(a)?.Name; - - return dto; - }).ToList(); + var response = entities.Select(a => AppDto.FromApp(a, subject, appPlansProvider)).ToList(); return Ok(response); } @@ -98,16 +86,10 @@ namespace Squidex.Areas.Api.Controllers.Apps [ApiCosts(1)] public async Task PostApp([FromBody] CreateAppDto request) { - var command = SimpleMapper.Map(request, new CreateApp()); - var context = await CommandBus.PublishAsync(command); + var context = await CommandBus.PublishAsync(request.ToCommand()); var result = context.Result>(); - var response = new AppCreatedDto { Id = result.IdOrValue.ToString(), Version = result.Version }; - - response.Permission = AppContributorPermission.Owner; - - response.PlanName = appPlansProvider.GetPlan(null)?.Name; - response.PlanUpgrade = appPlansProvider.GetPlanUpgrade(null)?.Name; + var response = AppCreatedDto.FromResult(result, appPlansProvider); return CreatedAtAction(nameof(GetApps), response); } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/AddAppLanguageDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/AddAppLanguageDto.cs index a3b4f0818..59e89bdbb 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/AddAppLanguageDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/AddAppLanguageDto.cs @@ -6,7 +6,9 @@ // ========================================================================== using System.ComponentModel.DataAnnotations; +using Squidex.Domain.Apps.Entities.Apps.Commands; using Squidex.Infrastructure; +using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Apps.Models { @@ -17,5 +19,10 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models /// [Required] public Language Language { get; set; } + + public AddLanguage ToCommand() + { + return SimpleMapper.Map(this, new AddLanguage()); + } } } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/AppCreatedDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/AppCreatedDto.cs index 68f1ba689..b346838d0 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/AppCreatedDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/AppCreatedDto.cs @@ -5,10 +5,13 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== +using System; using System.ComponentModel.DataAnnotations; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Squidex.Domain.Apps.Core.Apps; +using Squidex.Domain.Apps.Entities.Apps.Services; +using Squidex.Infrastructure.Commands; namespace Squidex.Areas.Api.Controllers.Apps.Models { @@ -20,17 +23,17 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models [Required] public string Id { get; set; } - /// - /// The new version of the entity. - /// - public long Version { get; set; } - /// /// The permission level of the user. /// [JsonConverter(typeof(StringEnumConverter))] public AppContributorPermission Permission { get; set; } + /// + /// The new version of the entity. + /// + public long Version { get; set; } + /// /// Gets the current plan name. /// @@ -40,5 +43,17 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models /// Gets the next plan name. /// public string PlanUpgrade { get; set; } + + public static AppCreatedDto FromResult(EntityCreatedResult result, IAppPlansProvider apps) + { + var response = new AppCreatedDto { Id = result.IdOrValue.ToString(), Version = result.Version }; + + response.Permission = AppContributorPermission.Owner; + + response.PlanName = apps.GetPlan(null)?.Name; + response.PlanUpgrade = apps.GetPlanUpgrade(null)?.Name; + + return response; + } } } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/AppDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/AppDto.cs index 4ef8651b2..aa52218bd 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/AppDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/AppDto.cs @@ -11,6 +11,9 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using NodaTime; using Squidex.Domain.Apps.Core.Apps; +using Squidex.Domain.Apps.Entities.Apps; +using Squidex.Domain.Apps.Entities.Apps.Services; +using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Apps.Models { @@ -58,5 +61,17 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models /// Gets the next plan name. /// public string PlanUpgrade { get; set; } + + public static AppDto FromApp(IAppEntity app, string subject, IAppPlansProvider plans) + { + var response = SimpleMapper.Map(app, new AppDto()); + + response.Permission = app.Contributors[subject]; + + response.PlanName = plans.GetPlanForApp(app)?.Name; + response.PlanUpgrade = plans.GetPlanUpgradeForApp(app)?.Name; + + return response; + } } } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/AppLanguageDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/AppLanguageDto.cs index b85dae011..0a064ebac 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/AppLanguageDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/AppLanguageDto.cs @@ -7,7 +7,12 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using System.Linq; +using Squidex.Domain.Apps.Core.Apps; +using Squidex.Domain.Apps.Entities.Apps; +using Squidex.Domain.Apps.Entities.Apps.Commands; using Squidex.Infrastructure; +using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Apps.Models { @@ -40,5 +45,26 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models /// Indicates if the language is optional. /// public bool IsOptional { get; set; } + + public static AppLanguageDto FromCommand(AddLanguage command) + { + return SimpleMapper.Map(command.Language, new AppLanguageDto { Fallback = new List() }); + } + + public static AppLanguageDto[] FromApp(IAppEntity app) + { + return app.LanguagesConfig.OfType().Select(x => FromLanguage(x, app)).OrderByDescending(x => x.IsMaster).ThenBy(x => x.Iso2Code).ToArray(); + } + + private static AppLanguageDto FromLanguage(LanguageConfig x, IAppEntity app) + { + return SimpleMapper.Map(x.Language, + new AppLanguageDto + { + IsMaster = x == app.LanguagesConfig.Master, + IsOptional = x.IsOptional, + Fallback = x.LanguageFallbacks.ToList() + }); + } } } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/AppPatternDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/AppPatternDto.cs index f5bcaf988..c42e21caf 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/AppPatternDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/AppPatternDto.cs @@ -6,7 +6,11 @@ // ========================================================================== using System; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using Squidex.Domain.Apps.Core.Apps; +using Squidex.Domain.Apps.Entities.Apps.Commands; +using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Apps.Models { @@ -33,5 +37,15 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models /// The regex message. /// public string Message { get; set; } + + public static AppPatternDto FromKvp(KeyValuePair kvp) + { + return SimpleMapper.Map(kvp.Value, new AppPatternDto { PatternId = kvp.Key }); + } + + public static AppPatternDto FromCommand(AddPattern command) + { + return SimpleMapper.Map(command, new AppPatternDto()); + } } } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/AssignAppContributorDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/AssignAppContributorDto.cs index 3f0203d30..988c36336 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/AssignAppContributorDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/AssignAppContributorDto.cs @@ -9,6 +9,8 @@ using System.ComponentModel.DataAnnotations; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Squidex.Domain.Apps.Core.Apps; +using Squidex.Domain.Apps.Entities.Apps.Commands; +using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Apps.Models { @@ -25,5 +27,10 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models /// [JsonConverter(typeof(StringEnumConverter))] public AppContributorPermission Permission { get; set; } + + public AssignContributor ToCommand() + { + return SimpleMapper.Map(this, new AssignContributor()); + } } } \ No newline at end of file diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/ClientDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/ClientDto.cs index 9858ade75..81252db26 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/ClientDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/ClientDto.cs @@ -5,10 +5,13 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Squidex.Domain.Apps.Core.Apps; +using Squidex.Domain.Apps.Entities.Apps.Commands; +using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Apps.Models { @@ -38,5 +41,15 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models [Required] [JsonConverter(typeof(StringEnumConverter))] public AppClientPermission Permission { get; set; } + + public static ClientDto FromKvp(KeyValuePair kvp) + { + return SimpleMapper.Map(kvp.Value, new ClientDto { Id = kvp.Key }); + } + + public static ClientDto FromCommand(AttachClient command) + { + return SimpleMapper.Map(command, new ClientDto { Name = command.Id, Permission = AppClientPermission.Editor }); + } } } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/ContributorAssignedDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/ContributorAssignedDto.cs index 826fd9426..2d8738d41 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/ContributorAssignedDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/ContributorAssignedDto.cs @@ -16,5 +16,10 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models /// [Required] public string ContributorId { get; set; } + + public static ContributorAssignedDto FromId(string id) + { + return new ContributorAssignedDto { ContributorId = id }; + } } } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/ContributorsDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/ContributorsDto.cs index 4d411b57f..2251382f8 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/ContributorsDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/ContributorsDto.cs @@ -6,6 +6,9 @@ // ========================================================================== using System.ComponentModel.DataAnnotations; +using System.Linq; +using Squidex.Domain.Apps.Entities.Apps; +using Squidex.Domain.Apps.Entities.Apps.Services; namespace Squidex.Areas.Api.Controllers.Apps.Models { @@ -21,5 +24,14 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models /// The maximum number of allowed contributors. /// public int MaxContributors { get; set; } + + public static ContributorsDto FromApp(IAppEntity app, IAppPlansProvider plans) + { + var plan = plans.GetPlanForApp(app); + + var contributors = app.Contributors.Select(x => new ContributorDto { ContributorId = x.Key, Permission = x.Value }).ToArray(); + + return new ContributorsDto { Contributors = contributors, MaxContributors = plan.MaxContributors }; + } } } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/CreateAppClientDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/CreateAppClientDto.cs index c9ea73b54..c7ba2a04f 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/CreateAppClientDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/CreateAppClientDto.cs @@ -6,6 +6,8 @@ // ========================================================================== using System.ComponentModel.DataAnnotations; +using Squidex.Domain.Apps.Entities.Apps.Commands; +using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Apps.Models { @@ -17,5 +19,10 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models [Required] [RegularExpression("^[a-z0-9]+(\\-[a-z0-9]+)*$")] public string Id { get; set; } + + public AttachClient ToCommand() + { + return SimpleMapper.Map(this, new AttachClient()); + } } } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/CreateAppDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/CreateAppDto.cs index 92cab9c82..52a769f50 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/CreateAppDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/CreateAppDto.cs @@ -6,6 +6,8 @@ // ========================================================================== using System.ComponentModel.DataAnnotations; +using Squidex.Domain.Apps.Entities.Apps.Commands; +using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Apps.Models { @@ -22,5 +24,10 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models /// Initialize the app with the inbuilt template. /// public string Template { get; set; } + + public CreateApp ToCommand() + { + return SimpleMapper.Map(this, new CreateApp()); + } } } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/UpdateAppClientDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/UpdateAppClientDto.cs index c366d50ef..fa6e3a16c 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/UpdateAppClientDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/UpdateAppClientDto.cs @@ -9,6 +9,8 @@ using System.ComponentModel.DataAnnotations; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Squidex.Domain.Apps.Core.Apps; +using Squidex.Domain.Apps.Entities.Apps.Commands; +using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Apps.Models { @@ -25,5 +27,10 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models /// [JsonConverter(typeof(StringEnumConverter))] public AppClientPermission? Permission { get; set; } + + public UpdateClient ToCommand(string clientId) + { + return SimpleMapper.Map(this, new UpdateClient { Id = clientId }); + } } } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/UpdateAppLanguageDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/UpdateAppLanguageDto.cs index 5f888a970..83d7fc5a7 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/UpdateAppLanguageDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/UpdateAppLanguageDto.cs @@ -6,7 +6,9 @@ // ========================================================================== using System.Collections.Generic; +using Squidex.Domain.Apps.Entities.Apps.Commands; using Squidex.Infrastructure; +using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Apps.Models { @@ -26,5 +28,10 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models /// Optional fallback languages. /// public List Fallback { get; set; } + + public UpdateLanguage ToCommand(Language language) + { + return SimpleMapper.Map(this, new UpdateLanguage { Language = language }); + } } } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/UpdatePatternDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/UpdatePatternDto.cs index 76e75f116..4c225880f 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/UpdatePatternDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/UpdatePatternDto.cs @@ -5,7 +5,10 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== +using System; using System.ComponentModel.DataAnnotations; +using Squidex.Domain.Apps.Entities.Apps.Commands; +using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Apps.Models { @@ -27,5 +30,15 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models /// The regex message. /// public string Message { get; set; } + + public AddPattern ToAddCommand() + { + return SimpleMapper.Map(this, new AddPattern()); + } + + public UpdatePattern ToUpdateCommand(Guid id) + { + return SimpleMapper.Map(this, new UpdatePattern { PatternId = id }); + } } }