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