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