using EnvelopeGenerator.Application.Common.Extensions; using EnvelopeGenerator.Domain.Constants; namespace EnvelopeGenerator.Application.Common.Interfaces.Services.Notification; /// /// /// public record DocumentReceivedNotification : EnvelopeNotificationBase { /// /// /// public required string DocumentTitle { get; init; } /// /// /// public required string NameReceiver { get; init; } /// /// /// public required string NameSender { get; init; } /// /// [SIGNATURE_TYPE] /// public required bool IsReadAndConfirm { private get; init; } /// /// /// public string SignatureType => IsReadAndConfirm ? "Signieren" : "Lesen und bestätigen"; /// /// /// public required bool AdvancedSignature { private get; init; } /// /// /// public string DocumentProcess => AdvancedSignature ? " und elektronisch unterschreiben" : string.Empty; /// /// /// public required Uri Origin { private get; init; } /// /// /// public required string EnvelopeUuid { private get; init; } /// /// /// public required string ReceiverSignature { private get; init; } private Uri EnvelopeURL => new(Origin, $"Envelope/{(EnvelopeUuid, ReceiverSignature).ToEnvelopeKey()}"); /// /// /// public string LinkToDocument => EnvelopeURL.AbsoluteUri; /// /// /// public string LinkToDocumentText { get { var urlText = EnvelopeURL.ToString(); return $"{urlText[..Math.Min(urlText.Length, 40)]}.."; } } /// /// /// public required string Message { get; init; } /// /// /// public string NamePortal { get; set; } = "signFLOW Portal"; /// /// /// /// public override EmailTemplateType GetTemplateType() { return EmailTemplateType.DocumentReceived; } }