using HrynCo.NotificationService.DAL.Abstract.Providers; 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.EmailChannels.GetByService; internal sealed class GetEmailChannelsHandler : RequestHandler>> { private readonly IEmailChannelRepository _channels; private readonly INotificationServiceRepository _services; public GetEmailChannelsHandler( IContextualSerilogLogger logger, IEmailChannelRepository channels, INotificationServiceRepository services) : base(logger) { _channels = channels; _services = services; } protected override async Task>> DoOnHandle( GetEmailChannelsQuery request, CancellationToken cancellationToken) { var service = await _services.GetByNameAsync(request.ServiceName, cancellationToken); if (service is null) return Success>([]); var channels = await _channels.GetByServiceAsync(service.Id, cancellationToken); return Success(channels); } }