From 3b7d0e13215a5838b9c0a6516f4bd190aade8ef7 Mon Sep 17 00:00:00 2001 From: TekH Date: Wed, 8 Oct 2025 12:41:14 +0200 Subject: [PATCH] refactor(RemoveSignatureNotification): create with handlers to remove signatures of a document --- .../Handlers/RemoveAnnotationHandler.cs | 32 +++++++++++++++ .../Handlers/RemoveHistoryHandler.cs | 40 +++++++++++++++++++ .../RemoveSignatureNotification.cs | 9 +++++ .../Entities/DocumentStatus.cs | 3 +- EnvelopeGenerator.Domain/Entities/History.cs | 3 +- 5 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/Handlers/RemoveAnnotationHandler.cs create mode 100644 EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/Handlers/RemoveHistoryHandler.cs create mode 100644 EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/RemoveSignatureNotification.cs diff --git a/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/Handlers/RemoveAnnotationHandler.cs b/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/Handlers/RemoveAnnotationHandler.cs new file mode 100644 index 00000000..0142b352 --- /dev/null +++ b/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/Handlers/RemoveAnnotationHandler.cs @@ -0,0 +1,32 @@ +using DigitalData.Core.Abstraction.Application.Repository; +using MediatR; + +namespace EnvelopeGenerator.Application.Common.Notifications.RemoveSignature.Handlers; + +/// +/// +/// +public class RemoveAnnotationHandler : INotificationHandler +{ + private readonly IRepository _repo; + + /// + /// + /// + /// + public RemoveAnnotationHandler(IRepository repository) + { + _repo = repository; + } + + /// + /// + /// + /// + /// + /// + public async Task Handle(RemoveSignatureNotification notification, CancellationToken cancel) + { + await _repo.DeleteAsync(s => s.EnvelopeId == notification.EnvelopeId, cancel); + } +} \ No newline at end of file diff --git a/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/Handlers/RemoveHistoryHandler.cs b/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/Handlers/RemoveHistoryHandler.cs new file mode 100644 index 00000000..54e5e087 --- /dev/null +++ b/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/Handlers/RemoveHistoryHandler.cs @@ -0,0 +1,40 @@ +using DigitalData.Core.Abstraction.Application.Repository; +using EnvelopeGenerator.Application.Common.Extensions; +using EnvelopeGenerator.Application.Histories.Commands; +using EnvelopeGenerator.Domain.Constants; +using MediatR; +using Newtonsoft.Json; + +namespace EnvelopeGenerator.Application.Common.Notifications.RemoveSignature.Handlers; + +/// +/// +/// +public class RemoveHistoryHandler : INotificationHandler +{ + private readonly IRepository _repo; + + /// + /// + /// + /// + public RemoveHistoryHandler(IRepository repository) + { + _repo = repository; + } + + /// + /// + /// + /// + /// + /// + public async Task Handle(RemoveSignatureNotification notification, CancellationToken cancel) + { + await _repo.DeleteAsync(hists + => hists + .Where(hist => hist.EnvelopeId == notification.EnvelopeId) + .Where(hist => hist.Status == EnvelopeStatus.DocumentSigned) + , cancel); + } +} \ No newline at end of file diff --git a/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/RemoveSignatureNotification.cs b/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/RemoveSignatureNotification.cs new file mode 100644 index 00000000..0abaf178 --- /dev/null +++ b/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/RemoveSignatureNotification.cs @@ -0,0 +1,9 @@ +using MediatR; + +namespace EnvelopeGenerator.Application.Common.Notifications.RemoveSignature; + +/// +/// +/// +/// +public record RemoveSignatureNotification(int EnvelopeId) : INotification; \ No newline at end of file diff --git a/EnvelopeGenerator.Domain/Entities/DocumentStatus.cs b/EnvelopeGenerator.Domain/Entities/DocumentStatus.cs index dd2feee1..d1b11c2c 100644 --- a/EnvelopeGenerator.Domain/Entities/DocumentStatus.cs +++ b/EnvelopeGenerator.Domain/Entities/DocumentStatus.cs @@ -1,5 +1,6 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +using DigitalData.Core.Abstractions.Interfaces; using EnvelopeGenerator.Domain.Interfaces; #if NETFRAMEWORK @@ -14,7 +15,7 @@ namespace EnvelopeGenerator.Domain.Entities #endif [Table("TBSIG_DOCUMENT_STATUS", Schema = "dbo")] -public class DocumentStatus : IHasEnvelope, IHasReceiver +public class DocumentStatus : IHasEnvelope, IHasReceiver, IEntity { public DocumentStatus() { diff --git a/EnvelopeGenerator.Domain/Entities/History.cs b/EnvelopeGenerator.Domain/Entities/History.cs index ccb564e7..68654b21 100644 --- a/EnvelopeGenerator.Domain/Entities/History.cs +++ b/EnvelopeGenerator.Domain/Entities/History.cs @@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using EnvelopeGenerator.Domain.Interfaces; using EnvelopeGenerator.Domain.Constants; +using DigitalData.Core.Abstractions.Interfaces; #if NETFRAMEWORK @@ -17,7 +18,7 @@ namespace EnvelopeGenerator.Domain.Entities #endif [Table("TBSIG_ENVELOPE_HISTORY", Schema = "dbo")] -public class History : IHasEnvelope, IHasReceiver +public class History : IHasEnvelope, IHasReceiver, IEntity { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)]