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;
}
}