using HrynCo.DAL.Abstract; using HrynCo.NotificationService.Services.Logging; using MediatR; using Serilog; namespace HrynCo.NotificationService.Services.Core; public abstract class RequestHandler : IRequestHandler where TRequest : IRequest { protected RequestHandler(IContextualSerilogLogger logger, IUnitOfWork unitOfWork) { Logger = logger.Logger; UnitOfWork = unitOfWork; } protected ILogger Logger { get; } protected IUnitOfWork UnitOfWork { get; } public Task Handle(TRequest request, CancellationToken cancellationToken) { return DoOnHandle(request, cancellationToken); } protected abstract Task DoOnHandle(TRequest request, CancellationToken cancellationToken); }