Files
hrynco-notification-service/HrynCo.NotificationService.Web/Controllers/Admin/LegacyAdminTemplatesController.cs
T
agrynco 81654c0d33 feat(templates): add service language template management
Add normalized service and template catalogs, scoped administration, migration, validation, and regression coverage.

Ref: IT-1601
2026-10-17 22:02:43 +03:00

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 });
}
}