81654c0d33
Add normalized service and template catalogs, scoped administration, migration, validation, and regression coverage. Ref: IT-1601
39 lines
1.9 KiB
C#
39 lines
1.9 KiB
C#
using HrynCo.NotificationService.DAL.Abstract.Repositories;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace HrynCo.NotificationService.Web.Controllers.Admin;
|
|
|
|
[Route("admin/templates")]
|
|
public sealed class LegacyAdminTemplatesController(INotificationServiceRepository services,
|
|
IEmailTemplateDefinitionRepository definitions) : Controller
|
|
{
|
|
[HttpGet("")]
|
|
public async Task<IActionResult> Index([FromQuery] string? serviceName, [FromQuery] string? serviceNameFilter,
|
|
[FromQuery] string? key, [FromQuery] string? keyFilter, CancellationToken ct)
|
|
{
|
|
var name = serviceName ?? serviceNameFilter;
|
|
var service = (await services.GetAllAsync(ct)).SingleOrDefault(s => s.Name == name);
|
|
if (service is null)
|
|
return RedirectToAction("Index", "AdminServices");
|
|
return RedirectToAction("Index", "AdminTemplates", new { serviceId = service.Id, key = key ?? keyFilter });
|
|
}
|
|
|
|
[HttpGet("create")]
|
|
public async Task<IActionResult> Create([FromQuery] string? serviceNameFilter, [FromQuery] string? keyFilter, CancellationToken ct)
|
|
{
|
|
var service = (await services.GetAllAsync(ct)).SingleOrDefault(s => s.Name == serviceNameFilter);
|
|
return service is null ? RedirectToAction("Index", "AdminServices")
|
|
: RedirectToAction("Create", "AdminTemplates", new { serviceId = service.Id, keyFilter });
|
|
}
|
|
|
|
[HttpGet("{serviceName}/{key}")]
|
|
[HttpGet("{serviceName}/{key}/{languageCode}")]
|
|
public async Task<IActionResult> Edit(string serviceName, string key, string? languageCode,
|
|
[FromQuery] string? keyFilter, CancellationToken ct)
|
|
{
|
|
var definition = await definitions.GetDefinitionAsync(serviceName, key, ct);
|
|
return definition is null ? NotFound() : RedirectToAction("Edit", "AdminTemplates",
|
|
new { serviceId = definition.ServiceId, definitionId = definition.Id, languageCode, keyFilter });
|
|
}
|
|
}
|