From 5cb3465e12b25a44bda3696d0daf14379c6e8703 Mon Sep 17 00:00:00 2001 From: TekH Date: Mon, 9 Feb 2026 09:38:34 +0100 Subject: [PATCH] Move handler to ResetEmailTemplateCommand.cs ResetEmailTemplateCommandHandler and its dependencies were relocated from ResetEmailTemplateCommandHandler.cs to ResetEmailTemplateCommand.cs. The handler logic and Defaults collection remain unchanged. Using statements were updated to support the move. --- .../Reset/ResetEmailTemplateCommand.cs | 115 ++++++++++++++++- .../Reset/ResetEmailTemplateCommandHandler.cs | 116 ------------------ 2 files changed, 113 insertions(+), 118 deletions(-) delete mode 100644 EnvelopeGenerator.Application/EmailTemplates/Commands/Reset/ResetEmailTemplateCommandHandler.cs diff --git a/EnvelopeGenerator.Application/EmailTemplates/Commands/Reset/ResetEmailTemplateCommand.cs b/EnvelopeGenerator.Application/EmailTemplates/Commands/Reset/ResetEmailTemplateCommand.cs index 9796b8e6..d770b1c1 100644 --- a/EnvelopeGenerator.Application/EmailTemplates/Commands/Reset/ResetEmailTemplateCommand.cs +++ b/EnvelopeGenerator.Application/EmailTemplates/Commands/Reset/ResetEmailTemplateCommand.cs @@ -1,6 +1,9 @@ -using EnvelopeGenerator.Domain; +using DigitalData.Core.Abstraction.Application.Repository; using EnvelopeGenerator.Domain.Constants; using MediatR; +using EnvelopeGenerator.Application.Common.Dto; +using EnvelopeGenerator.Domain.Entities; +using Microsoft.EntityFrameworkCore; namespace EnvelopeGenerator.Application.EmailTemplates.Commands.Reset; @@ -38,4 +41,112 @@ public record ResetEmailTemplateCommand : EmailTemplateQueryBase, IRequest public ResetEmailTemplateCommand(int? Id = null, EmailTemplateType? Type = null) : base(Id, Type) { } -}; \ No newline at end of file +}; + +/// +/// +/// +public class ResetEmailTemplateCommandHandler : IRequestHandler +{ + private readonly IRepository _repository; + + /// + /// + /// + /// + public ResetEmailTemplateCommandHandler(IRepository repository) + { + _repository = repository; + } + + /// + /// + /// + /// + /// + /// + [Obsolete("Use Read-method returning IReadQuery instead.")] + public async Task Handle(ResetEmailTemplateCommand request, CancellationToken cancel) + { + var temps = request.Id is not null + ? await _repository.ReadOnly().Where(t => t.Id == request.Id).ToListAsync(cancel) + : request.Type is not null + ? await _repository.ReadOnly().Where(t => t.Name == request.Type.ToString()).ToListAsync(cancel) + : await _repository.ReadOnly().ToListAsync(cancel); + + foreach (var temp in temps) + { + var def = Defaults.Where(t => t.Name == temp.Name).FirstOrDefault(); + if (def is not null) + await _repository.UpdateAsync(def, t => t.Id == temp.Id, cancel); + } + } + + /// + /// + /// + public static readonly IEnumerable Defaults = new List() + { + new(){ + Id = 1, + Name = "DocumentReceived", + Body = "Guten Tag [NAME_RECEIVER],
\r\n
\r\n[NAME_SENDER] hat Ihnen ein Dokument zum [SIGNATURE_TYPE] gesendet.
\r\n
\r\nÜber den folgenden Link können Sie das Dokument einsehen und elektronisch unterschreiben: [LINK_TO_DOCUMENT_TEXT]
\r\n
\r\n[MESSAGE]
\r\n
\r\nMit freundlichen Grüßen
\r\n
\r\n[NAME_PORTAL]", + Subject = "Dokument erhalten: '[DOCUMENT_TITLE]'" + }, + new(){ + Id = 2, + Name = "DocumentDeleted", + Body = "Guten Tag [NAME_RECEIVER],
\r\n
\r\n[NAME_SENDER] hat den Umschlag '[DOCUMENT_TITLE]' gelöscht/zurückgezogen.

\rBegründung:
[REASON]

\r\n
\r\nMit freundlichen Grüßen
\r\n
\r\n[NAME_PORTAL]", + Subject = "Umschlag zurückgezogen: '[DOCUMENT_TITLE]'" + }, + new(){ + Id = 3, + Name = "DocumentSigned", + Body = "Guten Tag [NAME_RECEIVER],
\r\n
\r\nhiermit bestätigen wir Ihnen die erfolgreiche Signatur für den Vorgang '[DOCUMENT_TITLE]'.
\r\nWenn alle Vertragspartner unterzeichnet haben, erhalten Sie ebenfalls per email ein unterschriebenes Exemplar mit dem Signierungszertifikat!\r\n
\r\nMit freundlichen Grüßen
\r\n
\r\n[NAME_PORTAL]", + Subject = "Dokument unterschrieben: '[DOCUMENT_TITLE]'" + }, + new(){ + Id = 4, + Name = "DocumentCompleted", + Body = "Guten Tag [NAME_RECEIVER],
\r\n
\r\nDer Signaturvorgang '[DOCUMENT_TITLE]' wurde erfolgreich abgeschlossen.
\r\n
\r\nSie erhalten das Dokument mit einem detaillierten Ergebnisbericht als Anhang zu dieser EmailAddress.
\r\n
\r\nMit freundlichen Grüßen
\r\n
\r\n[NAME_PORTAL]", + Subject = "Umschlag abgeschlossen: '[DOCUMENT_TITLE]'" + }, + new(){ + Id = 5, + Name = "DocumentAccessCodeReceived", + Body = "Guten Tag [NAME_RECEIVER],
\r\n
\r\n[NAME_SENDER] hat Ihnen ein Dokument zum [SIGNATURE_TYPE] gesendet.
\r\n
\r\nVerwenden Sie den folgenden Zugriffscode, um das Dokument einzusehen:
\r\n
\r\n[DOCUMENT_ACCESS_CODE]
\r\n
\r\nMit freundlichen Grüßen
\r\n
\r\n[NAME_PORTAL]", + Subject = "Zugriffscode für Dokument erhalten: '[DOCUMENT_TITLE]'" + }, + new(){ + Id = 6, + Name = "DocumentRejected_ADM", + Body = "Guten Tag [NAME_SENDER],

[NAME_RECEIVER] hat den Umschlag '[DOCUMENT_TITLE]' mit folgendem Grund abgelehnt:

\r\n[REASON] \r\n

Der Umschlag wurde auf den Include Rejected gesetzt.

\r\nMit freundlichen Grüßen
\r\n
\r\n[NAME_PORTAL]", + Subject = "'[DOCUMENT_TITLE]' - Unterzeichnungsvorgang zurückgezogen" + }, + new(){ + Id = 9, + Name = "DocumentRejected_REC", + Body = "Guten Tag [NAME_RECEIVER],\r\n

Hiermit bestätigen wir Ihnen die Ablehnung des Unterzeichnungsvorganges '[DOCUMENT_TITLE]'!

Der Vertragsinhaber [NAME_SENDER] wurde über die Ablehnung informiert.

\r\nMit freundlichen Grüßen
\r\n
\r\n[NAME_PORTAL]", + Subject = "'[DOCUMENT_TITLE]' - Bestätigung Ablehnung" + }, + new(){ + Id = 10, + Name = "DocumentRejected_REC_2", + Body = "Guten Tag [NAME_RECEIVER],\r\n

Der Unterzeichnungsvorganges '[DOCUMENT_TITLE]' wurde durch einen anderen Vertragspartner abgelehnt! Ihre notwendige Unterzeichnung wurde verworfen.

Der Vertragsinhaber [NAME_SENDER] wird sich bei Bedarf mit Ihnen in Verbindung setzen.

\r\nMit freundlichen Grüßen
\r\n
\r\n[NAME_PORTAL]", + Subject = "'[DOCUMENT_TITLE]' - Unterzeichnungsvorgang abgelehnt." + }, + new(){ + Id = 11, + Name = "DocumentShared", + Body = "Guten Tag,

[NAME_RECEIVER] hat Ihnen ein Dokument zum Ansehen gesendet.

Über den folgenden Link können Sie das Dokument einsehen: [LINK_TO_DOCUMENT_TEXT]


Mit freundlichen Grüßen

[NAME_PORTAL]", + Subject = "Dokument geteilt: '[DOCUMENT_TITLE]'" + }, + new(){ + Id = 12, + Name = "TotpSecret", + Body = "Guten Tag,

Sie können auf Ihren Zwei-Faktor-Authentifizierungscode zugreifen, indem Sie den unten stehenden QR-Code mit einer beliebigen Authentifizierungs-App auf Ihrem Telefon scannen (Google Authenticator, Microsoft Authenticator usw.). Dieser Code ist bis zum [TFA_EXPIRATION] gültig.



\r\n
Mit freundlichen Grüßen

[NAME_PORTAL]", + Subject = "2-Faktor-Verifizierung QR-Code" + } + }; + +} \ No newline at end of file diff --git a/EnvelopeGenerator.Application/EmailTemplates/Commands/Reset/ResetEmailTemplateCommandHandler.cs b/EnvelopeGenerator.Application/EmailTemplates/Commands/Reset/ResetEmailTemplateCommandHandler.cs deleted file mode 100644 index d22a261e..00000000 --- a/EnvelopeGenerator.Application/EmailTemplates/Commands/Reset/ResetEmailTemplateCommandHandler.cs +++ /dev/null @@ -1,116 +0,0 @@ -using DigitalData.Core.Abstraction.Application.Repository; -using EnvelopeGenerator.Application.Common.Dto; -using EnvelopeGenerator.Domain.Entities; -using MediatR; -using Microsoft.EntityFrameworkCore; -using System.Linq; - -namespace EnvelopeGenerator.Application.EmailTemplates.Commands.Reset; - -///

-/// -/// -public class ResetEmailTemplateCommandHandler : IRequestHandler -{ - private readonly IRepository _repository; - - /// - /// - /// - /// - public ResetEmailTemplateCommandHandler(IRepository repository) - { - _repository = repository; - } - - /// - /// - /// - /// - /// - /// - [Obsolete("Use Read-method returning IReadQuery instead.")] - public async Task Handle(ResetEmailTemplateCommand request, CancellationToken cancel) - { - var temps = request.Id is not null - ? await _repository.ReadOnly().Where(t => t.Id == request.Id).ToListAsync(cancel) - : request.Type is not null - ? await _repository.ReadOnly().Where(t => t.Name == request.Type.ToString()).ToListAsync(cancel) - : await _repository.ReadOnly().ToListAsync(cancel); - - foreach (var temp in temps) - { - var def = Defaults.Where(t => t.Name == temp.Name).FirstOrDefault(); - if(def is not null) - await _repository.UpdateAsync(def, t => t.Id == temp.Id, cancel); - } - } - - /// - /// - /// - public static readonly IEnumerable Defaults = new List() - { - new(){ - Id = 1, - Name = "DocumentReceived", - Body = "Guten Tag [NAME_RECEIVER],
\r\n
\r\n[NAME_SENDER] hat Ihnen ein Dokument zum [SIGNATURE_TYPE] gesendet.
\r\n
\r\nÜber den folgenden Link können Sie das Dokument einsehen und elektronisch unterschreiben: [LINK_TO_DOCUMENT_TEXT]
\r\n
\r\n[MESSAGE]
\r\n
\r\nMit freundlichen Grüßen
\r\n
\r\n[NAME_PORTAL]", - Subject = "Dokument erhalten: '[DOCUMENT_TITLE]'" - }, - new(){ - Id = 2, - Name = "DocumentDeleted", - Body = "Guten Tag [NAME_RECEIVER],
\r\n
\r\n[NAME_SENDER] hat den Umschlag '[DOCUMENT_TITLE]' gelöscht/zurückgezogen.

\rBegründung:
[REASON]

\r\n
\r\nMit freundlichen Grüßen
\r\n
\r\n[NAME_PORTAL]", - Subject = "Umschlag zurückgezogen: '[DOCUMENT_TITLE]'" - }, - new(){ - Id = 3, - Name = "DocumentSigned", - Body = "Guten Tag [NAME_RECEIVER],
\r\n
\r\nhiermit bestätigen wir Ihnen die erfolgreiche Signatur für den Vorgang '[DOCUMENT_TITLE]'.
\r\nWenn alle Vertragspartner unterzeichnet haben, erhalten Sie ebenfalls per email ein unterschriebenes Exemplar mit dem Signierungszertifikat!\r\n
\r\nMit freundlichen Grüßen
\r\n
\r\n[NAME_PORTAL]", - Subject = "Dokument unterschrieben: '[DOCUMENT_TITLE]'" - }, - new(){ - Id = 4, - Name = "DocumentCompleted", - Body = "Guten Tag [NAME_RECEIVER],
\r\n
\r\nDer Signaturvorgang '[DOCUMENT_TITLE]' wurde erfolgreich abgeschlossen.
\r\n
\r\nSie erhalten das Dokument mit einem detaillierten Ergebnisbericht als Anhang zu dieser EmailAddress.
\r\n
\r\nMit freundlichen Grüßen
\r\n
\r\n[NAME_PORTAL]", - Subject = "Umschlag abgeschlossen: '[DOCUMENT_TITLE]'" - }, - new(){ - Id = 5, - Name = "DocumentAccessCodeReceived", - Body = "Guten Tag [NAME_RECEIVER],
\r\n
\r\n[NAME_SENDER] hat Ihnen ein Dokument zum [SIGNATURE_TYPE] gesendet.
\r\n
\r\nVerwenden Sie den folgenden Zugriffscode, um das Dokument einzusehen:
\r\n
\r\n[DOCUMENT_ACCESS_CODE]
\r\n
\r\nMit freundlichen Grüßen
\r\n
\r\n[NAME_PORTAL]", - Subject = "Zugriffscode für Dokument erhalten: '[DOCUMENT_TITLE]'" - }, - new(){ - Id = 6, - Name = "DocumentRejected_ADM", - Body = "Guten Tag [NAME_SENDER],

[NAME_RECEIVER] hat den Umschlag '[DOCUMENT_TITLE]' mit folgendem Grund abgelehnt:

\r\n[REASON] \r\n

Der Umschlag wurde auf den Include Rejected gesetzt.

\r\nMit freundlichen Grüßen
\r\n
\r\n[NAME_PORTAL]", - Subject = "'[DOCUMENT_TITLE]' - Unterzeichnungsvorgang zurückgezogen" - }, - new(){ - Id = 9, - Name = "DocumentRejected_REC", - Body = "Guten Tag [NAME_RECEIVER],\r\n

Hiermit bestätigen wir Ihnen die Ablehnung des Unterzeichnungsvorganges '[DOCUMENT_TITLE]'!

Der Vertragsinhaber [NAME_SENDER] wurde über die Ablehnung informiert.

\r\nMit freundlichen Grüßen
\r\n
\r\n[NAME_PORTAL]", - Subject = "'[DOCUMENT_TITLE]' - Bestätigung Ablehnung" - }, - new(){ - Id = 10, - Name = "DocumentRejected_REC_2", - Body = "Guten Tag [NAME_RECEIVER],\r\n

Der Unterzeichnungsvorganges '[DOCUMENT_TITLE]' wurde durch einen anderen Vertragspartner abgelehnt! Ihre notwendige Unterzeichnung wurde verworfen.

Der Vertragsinhaber [NAME_SENDER] wird sich bei Bedarf mit Ihnen in Verbindung setzen.

\r\nMit freundlichen Grüßen
\r\n
\r\n[NAME_PORTAL]", - Subject = "'[DOCUMENT_TITLE]' - Unterzeichnungsvorgang abgelehnt." - }, - new(){ - Id = 11, - Name = "DocumentShared", - Body = "Guten Tag,

[NAME_RECEIVER] hat Ihnen ein Dokument zum Ansehen gesendet.

Über den folgenden Link können Sie das Dokument einsehen: [LINK_TO_DOCUMENT_TEXT]


Mit freundlichen Grüßen

[NAME_PORTAL]", - Subject = "Dokument geteilt: '[DOCUMENT_TITLE]'" - }, - new(){ - Id = 12, - Name = "TotpSecret", - Body = "Guten Tag,

Sie können auf Ihren Zwei-Faktor-Authentifizierungscode zugreifen, indem Sie den unten stehenden QR-Code mit einer beliebigen Authentifizierungs-App auf Ihrem Telefon scannen (Google Authenticator, Microsoft Authenticator usw.). Dieser Code ist bis zum [TFA_EXPIRATION] gültig.



\r\n
Mit freundlichen Grüßen

[NAME_PORTAL]", - Subject = "2-Faktor-Verifizierung QR-Code" - } - }; - -}