using HrynCo.NotificationService.DAL.Abstract.Repositories; using HrynCo.NotificationService.Services.Core; using HrynCo.NotificationService.Services.Logging; using static HrynCo.NotificationService.Services.Core.ServiceResultHelper; namespace HrynCo.NotificationService.Services.TemplateDefinitions; internal sealed class GetServicePushTemplateDefinitionsHandler( IContextualSerilogLogger logger, INotificationServiceRepository services, IPushTemplateDefinitionRepository definitions) : RequestHandler>>(logger) { protected override async Task>> DoOnHandle(GetServicePushTemplateDefinitionsQuery request, CancellationToken cancellationToken) { if (await services.GetAsync(request.ServiceId, cancellationToken) is null) return Failure>("Service not found.", ServiceErrorCode.NotFound); var all = await definitions.GetDefinitionsAsync(request.ServiceId, cancellationToken); return Success>(all.Select(PushTemplateDefinitionMapping.Map).ToList()); } }