using AngleSharp.Html; using DigitalData.Core.Abstraction.Application.Repository; using MediatR; namespace EnvelopeGenerator.Application.Common.Notifications.RemoveSignature.Handlers; /// /// /// public class RemoveDocStatusHandler : INotificationHandler { private readonly IRepository _repo; /// /// /// /// public RemoveDocStatusHandler(IRepository repository) { _repo = repository; } /// /// /// /// /// /// public Task Handle(RemoveSignatureNotification notification, CancellationToken cancel) { notification.ThrowIfHasNoFilter(); return _repo.DeleteAsync(statuses => { // envelope ID filter if (notification.EnvelopeId is int envelopeId) statuses = statuses.Where(status => status.EnvelopeId == envelopeId); // envelope UUID filter if (notification.EnvelopeUuid is string envelopeUuid) statuses = statuses.Where(status => status.Envelope!.Uuid == envelopeUuid); // receiver Id filter if (notification.ReceiverId is int receiverId) statuses = statuses.Where(status => status.ReceiverId == receiverId); // receiver signature filter if (notification.ReceiverSignature is string receiverSignature) statuses = statuses.Where(status => status.Receiver!.Signature == receiverSignature); return statuses; }, cancel); } }