feat(templates): add service language template management
Add normalized service and template catalogs, scoped administration, migration, validation, and regression coverage. Ref: IT-1601
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
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 });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user