Browse Source

Apps.

pull/282/head
Sebastian Stehle 9 years ago
parent
commit
038edb8142
  1. 10
      src/Squidex/Areas/Api/Controllers/Apps/AppClientsController.cs
  2. 10
      src/Squidex/Areas/Api/Controllers/Apps/AppContributorsController.cs
  3. 21
      src/Squidex/Areas/Api/Controllers/Apps/AppLanguagesController.cs
  4. 15
      src/Squidex/Areas/Api/Controllers/Apps/AppPatternsController.cs
  5. 26
      src/Squidex/Areas/Api/Controllers/Apps/AppsController.cs
  6. 7
      src/Squidex/Areas/Api/Controllers/Apps/Models/AddAppLanguageDto.cs
  7. 25
      src/Squidex/Areas/Api/Controllers/Apps/Models/AppCreatedDto.cs
  8. 15
      src/Squidex/Areas/Api/Controllers/Apps/Models/AppDto.cs
  9. 26
      src/Squidex/Areas/Api/Controllers/Apps/Models/AppLanguageDto.cs
  10. 14
      src/Squidex/Areas/Api/Controllers/Apps/Models/AppPatternDto.cs
  11. 7
      src/Squidex/Areas/Api/Controllers/Apps/Models/AssignAppContributorDto.cs
  12. 13
      src/Squidex/Areas/Api/Controllers/Apps/Models/ClientDto.cs
  13. 5
      src/Squidex/Areas/Api/Controllers/Apps/Models/ContributorAssignedDto.cs
  14. 12
      src/Squidex/Areas/Api/Controllers/Apps/Models/ContributorsDto.cs
  15. 7
      src/Squidex/Areas/Api/Controllers/Apps/Models/CreateAppClientDto.cs
  16. 7
      src/Squidex/Areas/Api/Controllers/Apps/Models/CreateAppDto.cs
  17. 7
      src/Squidex/Areas/Api/Controllers/Apps/Models/UpdateAppClientDto.cs
  18. 7
      src/Squidex/Areas/Api/Controllers/Apps/Models/UpdateAppLanguageDto.cs
  19. 13
      src/Squidex/Areas/Api/Controllers/Apps/Models/UpdatePatternDto.cs

10
src/Squidex/Areas/Api/Controllers/Apps/AppClientsController.cs

@ -10,10 +10,8 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using NSwag.Annotations; using NSwag.Annotations;
using Squidex.Areas.Api.Controllers.Apps.Models; using Squidex.Areas.Api.Controllers.Apps.Models;
using Squidex.Domain.Apps.Core.Apps;
using Squidex.Domain.Apps.Entities.Apps.Commands; using Squidex.Domain.Apps.Entities.Apps.Commands;
using Squidex.Infrastructure.Commands; using Squidex.Infrastructure.Commands;
using Squidex.Infrastructure.Reflection;
using Squidex.Pipeline; using Squidex.Pipeline;
namespace Squidex.Areas.Api.Controllers.Apps namespace Squidex.Areas.Api.Controllers.Apps
@ -50,7 +48,7 @@ namespace Squidex.Areas.Api.Controllers.Apps
[ApiCosts(0)] [ApiCosts(0)]
public IActionResult GetClients(string app) 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(); Response.Headers["ETag"] = App.Version.ToString();
@ -76,11 +74,11 @@ namespace Squidex.Areas.Api.Controllers.Apps
[ApiCosts(1)] [ApiCosts(1)]
public async Task<IActionResult> PostClient(string app, [FromBody] CreateAppClientDto request) public async Task<IActionResult> PostClient(string app, [FromBody] CreateAppClientDto request)
{ {
var command = SimpleMapper.Map(request, new AttachClient()); var command = request.ToCommand();
await CommandBus.PublishAsync(command); 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); return CreatedAtAction(nameof(GetClients), new { app }, response);
} }
@ -104,7 +102,7 @@ namespace Squidex.Areas.Api.Controllers.Apps
[ApiCosts(1)] [ApiCosts(1)]
public async Task<IActionResult> PutClient(string app, string clientId, [FromBody] UpdateAppClientDto request) public async Task<IActionResult> 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(); return NoContent();
} }

10
src/Squidex/Areas/Api/Controllers/Apps/AppContributorsController.cs

@ -5,7 +5,6 @@
// All rights reserved. Licensed under the MIT license. // All rights reserved. Licensed under the MIT license.
// ========================================================================== // ==========================================================================
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using NSwag.Annotations; 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.Commands;
using Squidex.Domain.Apps.Entities.Apps.Services; using Squidex.Domain.Apps.Entities.Apps.Services;
using Squidex.Infrastructure.Commands; using Squidex.Infrastructure.Commands;
using Squidex.Infrastructure.Reflection;
using Squidex.Pipeline; using Squidex.Pipeline;
namespace Squidex.Areas.Api.Controllers.Apps namespace Squidex.Areas.Api.Controllers.Apps
@ -50,9 +48,7 @@ namespace Squidex.Areas.Api.Controllers.Apps
[ApiCosts(0)] [ApiCosts(0)]
public IActionResult GetContributors(string app) public IActionResult GetContributors(string app)
{ {
var contributors = App.Contributors.Select(x => new ContributorDto { ContributorId = x.Key, Permission = x.Value }).ToArray(); var response = ContributorsDto.FromApp(App, appPlansProvider);
var response = new ContributorsDto { Contributors = contributors, MaxContributors = appPlansProvider.GetPlanForApp(App).MaxContributors };
Response.Headers["ETag"] = App.Version.ToString(); Response.Headers["ETag"] = App.Version.ToString();
@ -76,11 +72,11 @@ namespace Squidex.Areas.Api.Controllers.Apps
[ApiCosts(1)] [ApiCosts(1)]
public async Task<IActionResult> PostContributor(string app, [FromBody] AssignAppContributorDto request) public async Task<IActionResult> PostContributor(string app, [FromBody] AssignAppContributorDto request)
{ {
var command = SimpleMapper.Map(request, new AssignContributor()); var command = request.ToCommand();
var context = await CommandBus.PublishAsync(command); var context = await CommandBus.PublishAsync(command);
var result = context.Result<EntityCreatedResult<string>>(); var result = context.Result<EntityCreatedResult<string>>();
var response = new ContributorAssignedDto { ContributorId = result.IdOrValue }; var response = ContributorAssignedDto.FromId(result.IdOrValue);
return Ok(response); return Ok(response);
} }

21
src/Squidex/Areas/Api/Controllers/Apps/AppLanguagesController.cs

@ -6,17 +6,13 @@
// ========================================================================== // ==========================================================================
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using NSwag.Annotations; using NSwag.Annotations;
using Squidex.Areas.Api.Controllers.Apps.Models; using Squidex.Areas.Api.Controllers.Apps.Models;
using Squidex.Domain.Apps.Core.Apps;
using Squidex.Domain.Apps.Entities.Apps.Commands; using Squidex.Domain.Apps.Entities.Apps.Commands;
using Squidex.Infrastructure; using Squidex.Infrastructure;
using Squidex.Infrastructure.Commands; using Squidex.Infrastructure.Commands;
using Squidex.Infrastructure.Reflection;
using Squidex.Pipeline; using Squidex.Pipeline;
namespace Squidex.Areas.Api.Controllers.Apps namespace Squidex.Areas.Api.Controllers.Apps
@ -50,14 +46,7 @@ namespace Squidex.Areas.Api.Controllers.Apps
[ApiCosts(0)] [ApiCosts(0)]
public IActionResult GetLanguages(string app) public IActionResult GetLanguages(string app)
{ {
var response = App.LanguagesConfig.OfType<LanguageConfig>().Select(x => var response = AppLanguageDto.FromApp(App);
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();
Response.Headers["ETag"] = App.Version.ToString(); Response.Headers["ETag"] = App.Version.ToString();
@ -82,9 +71,11 @@ namespace Squidex.Areas.Api.Controllers.Apps
[ApiCosts(1)] [ApiCosts(1)]
public async Task<IActionResult> PostLanguage(string app, [FromBody] AddAppLanguageDto request) public async Task<IActionResult> 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<Language>() }); await CommandBus.PublishAsync(command);
var response = AppLanguageDto.FromCommand(command);
return CreatedAtAction(nameof(GetLanguages), new { app }, response); return CreatedAtAction(nameof(GetLanguages), new { app }, response);
} }
@ -106,7 +97,7 @@ namespace Squidex.Areas.Api.Controllers.Apps
[ApiCosts(1)] [ApiCosts(1)]
public async Task<IActionResult> Update(string app, string language, [FromBody] UpdateAppLanguageDto request) public async Task<IActionResult> 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(); return NoContent();
} }

15
src/Squidex/Areas/Api/Controllers/Apps/AppPatternsController.cs

@ -13,7 +13,6 @@ using NSwag.Annotations;
using Squidex.Areas.Api.Controllers.Apps.Models; using Squidex.Areas.Api.Controllers.Apps.Models;
using Squidex.Domain.Apps.Entities.Apps.Commands; using Squidex.Domain.Apps.Entities.Apps.Commands;
using Squidex.Infrastructure.Commands; using Squidex.Infrastructure.Commands;
using Squidex.Infrastructure.Reflection;
using Squidex.Pipeline; using Squidex.Pipeline;
namespace Squidex.Areas.Api.Controllers.Apps namespace Squidex.Areas.Api.Controllers.Apps
@ -50,9 +49,9 @@ namespace Squidex.Areas.Api.Controllers.Apps
[ApiCosts(0)] [ApiCosts(0)]
public IActionResult GetPatterns(string app) public IActionResult GetPatterns(string app)
{ {
var response = var response = App.Patterns.Select(AppPatternDto.FromKvp).OrderBy(x => x.Name).ToList();
App.Patterns.Select(x => SimpleMapper.Map(x.Value, new AppPatternDto { PatternId = x.Key }))
.OrderBy(x => x.Name).ToList(); Response.Headers["ETag"] = App.Version.ToString();
return Ok(response); return Ok(response);
} }
@ -73,11 +72,11 @@ namespace Squidex.Areas.Api.Controllers.Apps
[ApiCosts(1)] [ApiCosts(1)]
public async Task<IActionResult> PostPattern(string app, [FromBody] UpdatePatternDto request) public async Task<IActionResult> PostPattern(string app, [FromBody] UpdatePatternDto request)
{ {
var command = SimpleMapper.Map(request, new AddPattern()); var command = request.ToAddCommand();
await CommandBus.PublishAsync(command); 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); return CreatedAtAction(nameof(GetPatterns), new { app }, response);
} }
@ -99,9 +98,7 @@ namespace Squidex.Areas.Api.Controllers.Apps
[ApiCosts(1)] [ApiCosts(1)]
public async Task<IActionResult> UpdatePattern(string app, Guid id, [FromBody] UpdatePatternDto request) public async Task<IActionResult> UpdatePattern(string app, Guid id, [FromBody] UpdatePatternDto request)
{ {
var command = SimpleMapper.Map(request, new UpdatePattern { PatternId = id }); await CommandBus.PublishAsync(request.ToUpdateCommand(id));
await CommandBus.PublishAsync(command);
return NoContent(); return NoContent();
} }

26
src/Squidex/Areas/Api/Controllers/Apps/AppsController.cs

@ -11,12 +11,10 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using NSwag.Annotations; using NSwag.Annotations;
using Squidex.Areas.Api.Controllers.Apps.Models; using Squidex.Areas.Api.Controllers.Apps.Models;
using Squidex.Domain.Apps.Core.Apps;
using Squidex.Domain.Apps.Entities; using Squidex.Domain.Apps.Entities;
using Squidex.Domain.Apps.Entities.Apps.Commands; using Squidex.Domain.Apps.Entities.Apps.Commands;
using Squidex.Domain.Apps.Entities.Apps.Services; using Squidex.Domain.Apps.Entities.Apps.Services;
using Squidex.Infrastructure.Commands; using Squidex.Infrastructure.Commands;
using Squidex.Infrastructure.Reflection;
using Squidex.Infrastructure.Security; using Squidex.Infrastructure.Security;
using Squidex.Pipeline; using Squidex.Pipeline;
@ -60,19 +58,9 @@ namespace Squidex.Areas.Api.Controllers.Apps
{ {
var subject = HttpContext.User.OpenIdSubject(); var subject = HttpContext.User.OpenIdSubject();
var apps = await appProvider.GetUserApps(subject); var entities = await appProvider.GetUserApps(subject);
var response = apps.Select(a => var response = entities.Select(a => AppDto.FromApp(a, subject, appPlansProvider)).ToList();
{
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();
return Ok(response); return Ok(response);
} }
@ -98,16 +86,10 @@ namespace Squidex.Areas.Api.Controllers.Apps
[ApiCosts(1)] [ApiCosts(1)]
public async Task<IActionResult> PostApp([FromBody] CreateAppDto request) public async Task<IActionResult> PostApp([FromBody] CreateAppDto request)
{ {
var command = SimpleMapper.Map(request, new CreateApp()); var context = await CommandBus.PublishAsync(request.ToCommand());
var context = await CommandBus.PublishAsync(command);
var result = context.Result<EntityCreatedResult<Guid>>(); var result = context.Result<EntityCreatedResult<Guid>>();
var response = new AppCreatedDto { Id = result.IdOrValue.ToString(), Version = result.Version }; var response = AppCreatedDto.FromResult(result, appPlansProvider);
response.Permission = AppContributorPermission.Owner;
response.PlanName = appPlansProvider.GetPlan(null)?.Name;
response.PlanUpgrade = appPlansProvider.GetPlanUpgrade(null)?.Name;
return CreatedAtAction(nameof(GetApps), response); return CreatedAtAction(nameof(GetApps), response);
} }

7
src/Squidex/Areas/Api/Controllers/Apps/Models/AddAppLanguageDto.cs

@ -6,7 +6,9 @@
// ========================================================================== // ==========================================================================
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Squidex.Domain.Apps.Entities.Apps.Commands;
using Squidex.Infrastructure; using Squidex.Infrastructure;
using Squidex.Infrastructure.Reflection;
namespace Squidex.Areas.Api.Controllers.Apps.Models namespace Squidex.Areas.Api.Controllers.Apps.Models
{ {
@ -17,5 +19,10 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models
/// </summary> /// </summary>
[Required] [Required]
public Language Language { get; set; } public Language Language { get; set; }
public AddLanguage ToCommand()
{
return SimpleMapper.Map(this, new AddLanguage());
}
} }
} }

25
src/Squidex/Areas/Api/Controllers/Apps/Models/AppCreatedDto.cs

@ -5,10 +5,13 @@
// All rights reserved. Licensed under the MIT license. // All rights reserved. Licensed under the MIT license.
// ========================================================================== // ==========================================================================
using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Converters; using Newtonsoft.Json.Converters;
using Squidex.Domain.Apps.Core.Apps; using Squidex.Domain.Apps.Core.Apps;
using Squidex.Domain.Apps.Entities.Apps.Services;
using Squidex.Infrastructure.Commands;
namespace Squidex.Areas.Api.Controllers.Apps.Models namespace Squidex.Areas.Api.Controllers.Apps.Models
{ {
@ -20,17 +23,17 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models
[Required] [Required]
public string Id { get; set; } public string Id { get; set; }
/// <summary>
/// The new version of the entity.
/// </summary>
public long Version { get; set; }
/// <summary> /// <summary>
/// The permission level of the user. /// The permission level of the user.
/// </summary> /// </summary>
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public AppContributorPermission Permission { get; set; } public AppContributorPermission Permission { get; set; }
/// <summary>
/// The new version of the entity.
/// </summary>
public long Version { get; set; }
/// <summary> /// <summary>
/// Gets the current plan name. /// Gets the current plan name.
/// </summary> /// </summary>
@ -40,5 +43,17 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models
/// Gets the next plan name. /// Gets the next plan name.
/// </summary> /// </summary>
public string PlanUpgrade { get; set; } public string PlanUpgrade { get; set; }
public static AppCreatedDto FromResult(EntityCreatedResult<Guid> 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;
}
} }
} }

15
src/Squidex/Areas/Api/Controllers/Apps/Models/AppDto.cs

@ -11,6 +11,9 @@ using Newtonsoft.Json;
using Newtonsoft.Json.Converters; using Newtonsoft.Json.Converters;
using NodaTime; using NodaTime;
using Squidex.Domain.Apps.Core.Apps; 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 namespace Squidex.Areas.Api.Controllers.Apps.Models
{ {
@ -58,5 +61,17 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models
/// Gets the next plan name. /// Gets the next plan name.
/// </summary> /// </summary>
public string PlanUpgrade { get; set; } 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;
}
} }
} }

26
src/Squidex/Areas/Api/Controllers/Apps/Models/AppLanguageDto.cs

@ -7,7 +7,12 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; 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;
using Squidex.Infrastructure.Reflection;
namespace Squidex.Areas.Api.Controllers.Apps.Models namespace Squidex.Areas.Api.Controllers.Apps.Models
{ {
@ -40,5 +45,26 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models
/// Indicates if the language is optional. /// Indicates if the language is optional.
/// </summary> /// </summary>
public bool IsOptional { get; set; } public bool IsOptional { get; set; }
public static AppLanguageDto FromCommand(AddLanguage command)
{
return SimpleMapper.Map(command.Language, new AppLanguageDto { Fallback = new List<Language>() });
}
public static AppLanguageDto[] FromApp(IAppEntity app)
{
return app.LanguagesConfig.OfType<LanguageConfig>().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()
});
}
} }
} }

14
src/Squidex/Areas/Api/Controllers/Apps/Models/AppPatternDto.cs

@ -6,7 +6,11 @@
// ========================================================================== // ==========================================================================
using System; using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; 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 namespace Squidex.Areas.Api.Controllers.Apps.Models
{ {
@ -33,5 +37,15 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models
/// The regex message. /// The regex message.
/// </summary> /// </summary>
public string Message { get; set; } public string Message { get; set; }
public static AppPatternDto FromKvp(KeyValuePair<Guid, AppPattern> kvp)
{
return SimpleMapper.Map(kvp.Value, new AppPatternDto { PatternId = kvp.Key });
}
public static AppPatternDto FromCommand(AddPattern command)
{
return SimpleMapper.Map(command, new AppPatternDto());
}
} }
} }

7
src/Squidex/Areas/Api/Controllers/Apps/Models/AssignAppContributorDto.cs

@ -9,6 +9,8 @@ using System.ComponentModel.DataAnnotations;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Converters; using Newtonsoft.Json.Converters;
using Squidex.Domain.Apps.Core.Apps; using Squidex.Domain.Apps.Core.Apps;
using Squidex.Domain.Apps.Entities.Apps.Commands;
using Squidex.Infrastructure.Reflection;
namespace Squidex.Areas.Api.Controllers.Apps.Models namespace Squidex.Areas.Api.Controllers.Apps.Models
{ {
@ -25,5 +27,10 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models
/// </summary> /// </summary>
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public AppContributorPermission Permission { get; set; } public AppContributorPermission Permission { get; set; }
public AssignContributor ToCommand()
{
return SimpleMapper.Map(this, new AssignContributor());
}
} }
} }

13
src/Squidex/Areas/Api/Controllers/Apps/Models/ClientDto.cs

@ -5,10 +5,13 @@
// All rights reserved. Licensed under the MIT license. // All rights reserved. Licensed under the MIT license.
// ========================================================================== // ==========================================================================
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Converters; using Newtonsoft.Json.Converters;
using Squidex.Domain.Apps.Core.Apps; using Squidex.Domain.Apps.Core.Apps;
using Squidex.Domain.Apps.Entities.Apps.Commands;
using Squidex.Infrastructure.Reflection;
namespace Squidex.Areas.Api.Controllers.Apps.Models namespace Squidex.Areas.Api.Controllers.Apps.Models
{ {
@ -38,5 +41,15 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models
[Required] [Required]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public AppClientPermission Permission { get; set; } public AppClientPermission Permission { get; set; }
public static ClientDto FromKvp(KeyValuePair<string, AppClient> 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 });
}
} }
} }

5
src/Squidex/Areas/Api/Controllers/Apps/Models/ContributorAssignedDto.cs

@ -16,5 +16,10 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models
/// </summary> /// </summary>
[Required] [Required]
public string ContributorId { get; set; } public string ContributorId { get; set; }
public static ContributorAssignedDto FromId(string id)
{
return new ContributorAssignedDto { ContributorId = id };
}
} }
} }

12
src/Squidex/Areas/Api/Controllers/Apps/Models/ContributorsDto.cs

@ -6,6 +6,9 @@
// ========================================================================== // ==========================================================================
using System.ComponentModel.DataAnnotations; 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 namespace Squidex.Areas.Api.Controllers.Apps.Models
{ {
@ -21,5 +24,14 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models
/// The maximum number of allowed contributors. /// The maximum number of allowed contributors.
/// </summary> /// </summary>
public int MaxContributors { get; set; } 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 };
}
} }
} }

7
src/Squidex/Areas/Api/Controllers/Apps/Models/CreateAppClientDto.cs

@ -6,6 +6,8 @@
// ========================================================================== // ==========================================================================
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Squidex.Domain.Apps.Entities.Apps.Commands;
using Squidex.Infrastructure.Reflection;
namespace Squidex.Areas.Api.Controllers.Apps.Models namespace Squidex.Areas.Api.Controllers.Apps.Models
{ {
@ -17,5 +19,10 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models
[Required] [Required]
[RegularExpression("^[a-z0-9]+(\\-[a-z0-9]+)*$")] [RegularExpression("^[a-z0-9]+(\\-[a-z0-9]+)*$")]
public string Id { get; set; } public string Id { get; set; }
public AttachClient ToCommand()
{
return SimpleMapper.Map(this, new AttachClient());
}
} }
} }

7
src/Squidex/Areas/Api/Controllers/Apps/Models/CreateAppDto.cs

@ -6,6 +6,8 @@
// ========================================================================== // ==========================================================================
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Squidex.Domain.Apps.Entities.Apps.Commands;
using Squidex.Infrastructure.Reflection;
namespace Squidex.Areas.Api.Controllers.Apps.Models 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. /// Initialize the app with the inbuilt template.
/// </summary> /// </summary>
public string Template { get; set; } public string Template { get; set; }
public CreateApp ToCommand()
{
return SimpleMapper.Map(this, new CreateApp());
}
} }
} }

7
src/Squidex/Areas/Api/Controllers/Apps/Models/UpdateAppClientDto.cs

@ -9,6 +9,8 @@ using System.ComponentModel.DataAnnotations;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Converters; using Newtonsoft.Json.Converters;
using Squidex.Domain.Apps.Core.Apps; using Squidex.Domain.Apps.Core.Apps;
using Squidex.Domain.Apps.Entities.Apps.Commands;
using Squidex.Infrastructure.Reflection;
namespace Squidex.Areas.Api.Controllers.Apps.Models namespace Squidex.Areas.Api.Controllers.Apps.Models
{ {
@ -25,5 +27,10 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models
/// </summary> /// </summary>
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public AppClientPermission? Permission { get; set; } public AppClientPermission? Permission { get; set; }
public UpdateClient ToCommand(string clientId)
{
return SimpleMapper.Map(this, new UpdateClient { Id = clientId });
}
} }
} }

7
src/Squidex/Areas/Api/Controllers/Apps/Models/UpdateAppLanguageDto.cs

@ -6,7 +6,9 @@
// ========================================================================== // ==========================================================================
using System.Collections.Generic; using System.Collections.Generic;
using Squidex.Domain.Apps.Entities.Apps.Commands;
using Squidex.Infrastructure; using Squidex.Infrastructure;
using Squidex.Infrastructure.Reflection;
namespace Squidex.Areas.Api.Controllers.Apps.Models namespace Squidex.Areas.Api.Controllers.Apps.Models
{ {
@ -26,5 +28,10 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models
/// Optional fallback languages. /// Optional fallback languages.
/// </summary> /// </summary>
public List<Language> Fallback { get; set; } public List<Language> Fallback { get; set; }
public UpdateLanguage ToCommand(Language language)
{
return SimpleMapper.Map(this, new UpdateLanguage { Language = language });
}
} }
} }

13
src/Squidex/Areas/Api/Controllers/Apps/Models/UpdatePatternDto.cs

@ -5,7 +5,10 @@
// All rights reserved. Licensed under the MIT license. // All rights reserved. Licensed under the MIT license.
// ========================================================================== // ==========================================================================
using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Squidex.Domain.Apps.Entities.Apps.Commands;
using Squidex.Infrastructure.Reflection;
namespace Squidex.Areas.Api.Controllers.Apps.Models namespace Squidex.Areas.Api.Controllers.Apps.Models
{ {
@ -27,5 +30,15 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models
/// The regex message. /// The regex message.
/// </summary> /// </summary>
public string Message { get; set; } 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 });
}
} }
} }

Loading…
Cancel
Save