diff --git a/EnvelopeGenerator.Application/DTOs/ConfigDto.cs b/EnvelopeGenerator.Application/DTOs/ConfigDto.cs index 721d7524..17dfc4ff 100644 --- a/EnvelopeGenerator.Application/DTOs/ConfigDto.cs +++ b/EnvelopeGenerator.Application/DTOs/ConfigDto.cs @@ -3,19 +3,45 @@ using Microsoft.AspNetCore.Mvc; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; -namespace EnvelopeGenerator.Application.DTOs +namespace EnvelopeGenerator.Application.DTOs; + +/// +/// Data Transfer Object representing configuration settings. +/// +[ApiExplorerSettings(IgnoreApi = true)] +public class ConfigDto : IUnique { - [ApiExplorerSettings(IgnoreApi = true)] - public record ConfigDto( - string DocumentPath, - int SendingProfile, - string SignatureHost, - string ExternalProgramName, - string ExportPath) : IUnique - { - [NotMapped] - [JsonIgnore] - [Obsolete("Configuration does not have an ID; it represents a single table in the database.")] - public int Id => throw new InvalidOperationException("This configuration does not support an ID as it represents a single row in the database."); - }; + /// + /// Gets or sets the path to the document. + /// + public string DocumentPath { get; set; } + + /// + /// Gets or sets the sending profile identifier. + /// + public int SendingProfile { get; set; } + + /// + /// Gets or sets the signature host URL or name. + /// + public string SignatureHost { get; set; } + + /// + /// Gets or sets the name of the external program. + /// + public string ExternalProgramName { get; set; } + + /// + /// Gets or sets the path where exports will be saved. + /// + public string ExportPath { get; set; } + + /// + /// Gets the ID of the configuration. + /// This DTO represents a single row in the database and does not support an ID. + /// + [NotMapped] + [JsonIgnore] + [Obsolete("Configuration does not have an ID; it represents a single table in the database.")] + public int Id => throw new InvalidOperationException("This configuration does not support an ID as it represents a single row in the database."); } \ No newline at end of file diff --git a/EnvelopeGenerator.Application/DTOs/DocumentReceiverElementDto.cs b/EnvelopeGenerator.Application/DTOs/DocumentReceiverElementDto.cs index 04b9d0ad..8927357b 100644 --- a/EnvelopeGenerator.Application/DTOs/DocumentReceiverElementDto.cs +++ b/EnvelopeGenerator.Application/DTOs/DocumentReceiverElementDto.cs @@ -1,26 +1,96 @@ using DigitalData.Core.Abstractions; using Microsoft.AspNetCore.Mvc; -namespace EnvelopeGenerator.Application.DTOs +namespace EnvelopeGenerator.Application.DTOs; + +/// +/// Data Transfer Object representing a positioned element assigned to a document receiver. +/// +[ApiExplorerSettings(IgnoreApi = true)] +public class DocumentReceiverElementDto : IUnique { - [ApiExplorerSettings(IgnoreApi = true)] - public record DocumentReceiverElementDto( - int Id, - int DocumentId, - int ReceiverId, - int ElementType, - double X, - double Y, - double Width, - double Height, - int Page, - bool Required, - string? Tooltip, - bool ReadOnly, - int AnnotationIndex, - DateTime AddedWhen, - DateTime? ChangedWhen, - double Top, - double Left - ): IUnique; + /// + /// Gets or sets the unique identifier of the element. + /// + public int Id { get; set; } + + /// + /// Gets or sets the identifier of the associated document. + /// + public int DocumentId { get; set; } + + /// + /// Gets or sets the identifier of the receiver. + /// + public int ReceiverId { get; set; } + + /// + /// Gets or sets the type of the element. + /// + public int ElementType { get; set; } + + /// + /// Gets or sets the X coordinate of the element. + /// + public double X { get; set; } + + /// + /// Gets or sets the Y coordinate of the element. + /// + public double Y { get; set; } + + /// + /// Gets or sets the width of the element. + /// + public double Width { get; set; } + + /// + /// Gets or sets the height of the element. + /// + public double Height { get; set; } + + /// + /// Gets or sets the page number where the element appears. + /// + public int Page { get; set; } + + /// + /// Gets or sets a value indicating whether the element is required. + /// + public bool Required { get; set; } + + /// + /// Gets or sets the tooltip text for the element. + /// + public string? Tooltip { get; set; } + + /// + /// Gets or sets a value indicating whether the element is read-only. + /// + public bool ReadOnly { get; set; } + + /// + /// Gets or sets the annotation index for ordering or reference. + /// + public int AnnotationIndex { get; set; } + + /// + /// Gets or sets the timestamp when the element was added. + /// + public DateTime AddedWhen { get; set; } + + /// + /// Gets or sets the timestamp when the element was last changed, if applicable. + /// + public DateTime? ChangedWhen { get; set; } + + /// + /// Gets or sets the top position of the element (in layout terms). + /// + public double Top { get; set; } + + /// + /// Gets or sets the left position of the element (in layout terms). + /// + public double Left { get; set; } } \ No newline at end of file diff --git a/EnvelopeGenerator.Application/DTOs/DocumentStatusDto.cs b/EnvelopeGenerator.Application/DTOs/DocumentStatusDto.cs index a098746a..681ba505 100644 --- a/EnvelopeGenerator.Application/DTOs/DocumentStatusDto.cs +++ b/EnvelopeGenerator.Application/DTOs/DocumentStatusDto.cs @@ -1,18 +1,51 @@ using DigitalData.Core.Abstractions; using Microsoft.AspNetCore.Mvc; -namespace EnvelopeGenerator.Application.DTOs +namespace EnvelopeGenerator.Application.DTOs; + +/// +/// Data Transfer Object representing the status of a document for a specific receiver. +/// +[ApiExplorerSettings(IgnoreApi = true)] +public class DocumentStatusDto : IUnique { - [ApiExplorerSettings(IgnoreApi = true)] - public record DocumentStatusDto( - int Id, - int EnvelopeId, - int ReceiverId, - int Status, - DateTime? StatusChangedWhen, - DateTime AddedWhen, - DateTime? ChangedWhen) : IUnique - { - public string? Value { get; set; } - }; + /// + /// Gets or sets the unique identifier of the document status entry. + /// + public int Id { get; set; } + + /// + /// Gets or sets the ID of the associated envelope. + /// + public int EnvelopeId { get; set; } + + /// + /// Gets or sets the ID of the receiver associated with this status. + /// + public int ReceiverId { get; set; } + + /// + /// Gets or sets the current status code. + /// + public int Status { get; set; } + + /// + /// Gets or sets the timestamp when the status was changed. + /// + public DateTime? StatusChangedWhen { get; set; } + + /// + /// Gets or sets the timestamp when this record was added. + /// + public DateTime AddedWhen { get; set; } + + /// + /// Gets or sets the timestamp when this record was last changed. + /// + public DateTime? ChangedWhen { get; set; } + + /// + /// Gets or sets the display value associated with the status. + /// + public string? Value { get; set; } } \ No newline at end of file diff --git a/EnvelopeGenerator.Application/DTOs/EnvelopeCertificateDto.cs b/EnvelopeGenerator.Application/DTOs/EnvelopeCertificateDto.cs index 49852dce..d7782e64 100644 --- a/EnvelopeGenerator.Application/DTOs/EnvelopeCertificateDto.cs +++ b/EnvelopeGenerator.Application/DTOs/EnvelopeCertificateDto.cs @@ -1,16 +1,51 @@ using DigitalData.Core.Abstractions; using Microsoft.AspNetCore.Mvc; -namespace EnvelopeGenerator.Application.DTOs +namespace EnvelopeGenerator.Application.DTOs; + +/// +/// Data Transfer Object representing certificate information for an envelope. +/// +[ApiExplorerSettings(IgnoreApi = true)] +public class EnvelopeCertificateDto : IUnique { - [ApiExplorerSettings(IgnoreApi = true)] - public record EnvelopeCertificateDto( - int Id, - int EnvelopeId, - string EnvelopeUuid, - string EnvelopeSubject, - int CreatorId, - string CreatorName, - string CreatorEmail, - int EnvelopeStatus) : IUnique; + /// + /// Gets the unique identifier of the certificate. + /// + public int Id { get; init; } + + /// + /// Gets the envelope ID associated with the certificate. + /// + public int EnvelopeId { get; init; } + + /// + /// Gets the UUID of the envelope. + /// + public string EnvelopeUuid { get; init; } + + /// + /// Gets the subject of the envelope. + /// + public string EnvelopeSubject { get; init; } + + /// + /// Gets the ID of the creator of the envelope. + /// + public int CreatorId { get; init; } + + /// + /// Gets the name of the creator. + /// + public string CreatorName { get; init; } + + /// + /// Gets the email address of the creator. + /// + public string CreatorEmail { get; init; } + + /// + /// Gets the current status of the envelope. + /// + public int EnvelopeStatus { get; init; } } \ No newline at end of file diff --git a/EnvelopeGenerator.Application/DTOs/EnvelopeDocumentDto.cs b/EnvelopeGenerator.Application/DTOs/EnvelopeDocumentDto.cs index 97ca20c2..92139c3f 100644 --- a/EnvelopeGenerator.Application/DTOs/EnvelopeDocumentDto.cs +++ b/EnvelopeGenerator.Application/DTOs/EnvelopeDocumentDto.cs @@ -1,15 +1,36 @@ using DigitalData.Core.Abstractions; using Microsoft.AspNetCore.Mvc; -namespace EnvelopeGenerator.Application.DTOs +namespace EnvelopeGenerator.Application.DTOs; + +/// +/// Data Transfer Object representing a document within an envelope, including optional binary data and form elements. +/// +[ApiExplorerSettings(IgnoreApi = true)] +public class EnvelopeDocumentDto : IUnique { - [ApiExplorerSettings(IgnoreApi = true)] - public record EnvelopeDocumentDto - ( - int Id, - int EnvelopeId, - DateTime AddedWhen, - byte[]? ByteData = null, - IEnumerable? Elements = null - ) : IUnique; -} \ No newline at end of file + /// + /// Gets or sets the unique identifier of the document. + /// + public int Id { get; set; } + + /// + /// Gets or sets the envelope ID to which the document belongs. + /// + public int EnvelopeId { get; set; } + + /// + /// Gets or sets the date and time when the document was added. + /// + public DateTime AddedWhen { get; set; } + + /// + /// Gets or sets the binary data of the document, if available. + /// + public byte[]? ByteData { get; set; } + + /// + /// Gets or sets the collection of elements associated with the document for receiver interactions, if any. + /// + public IEnumerable? Elements { get; set; } +} diff --git a/EnvelopeGenerator.Application/DTOs/EnvelopeDto.cs b/EnvelopeGenerator.Application/DTOs/EnvelopeDto.cs index 4fa36caf..e1e82489 100644 --- a/EnvelopeGenerator.Application/DTOs/EnvelopeDto.cs +++ b/EnvelopeGenerator.Application/DTOs/EnvelopeDto.cs @@ -4,53 +4,52 @@ using DigitalData.UserManager.Application.DTOs.User; using EnvelopeGenerator.Domain.Entities; using Microsoft.AspNetCore.Mvc; -namespace EnvelopeGenerator.Application.DTOs +namespace EnvelopeGenerator.Application.DTOs; + +[ApiExplorerSettings(IgnoreApi = true)] +public record EnvelopeDto : IUnique { - [ApiExplorerSettings(IgnoreApi = true)] - public record EnvelopeDto() : IUnique - { - public int Id { get; set; } + public int Id { get; set; } - public int UserId { get; set; } + public int UserId { get; set; } - public int Status { get; set; } + public int Status { get; set; } - public string StatusName { get; set; } + public string StatusName { get; set; } - public string Uuid { get; set; } + public string Uuid { get; set; } - [TemplatePlaceholder("[MESSAGE]")] - public string Message { get; set; } + [TemplatePlaceholder("[MESSAGE]")] + public string Message { get; set; } - public DateTime AddedWhen { get; set; } + public DateTime AddedWhen { get; set; } - public DateTime? ChangedWhen { get; set; } + public DateTime? ChangedWhen { get; set; } - [TemplatePlaceholder("[DOCUMENT_TITLE]")] - public string Title { get; set; } + [TemplatePlaceholder("[DOCUMENT_TITLE]")] + public string Title { get; set; } - public int? ContractType { get; set; } + public int? ContractType { get; set; } - public string Language { get; set; } + public string Language { get; set; } - public int? EnvelopeTypeId { get; set; } + public int? EnvelopeTypeId { get; set; } - public int? CertificationType { get; set; } + public int? CertificationType { get; set; } - public bool? UseAccessCode { get; set; } + public bool? UseAccessCode { get; set; } - public bool TFAEnabled { get; init; } + public bool TFAEnabled { get; init; } - public UserReadDto? User { get; set; } + public UserReadDto? User { get; set; } - public EnvelopeType? EnvelopeType { get; set; } + public EnvelopeType? EnvelopeType { get; set; } - public string? EnvelopeTypeTitle { get; set; } + public string? EnvelopeTypeTitle { get; set; } - public bool IsAlreadySent { get; set; } + public bool IsAlreadySent { get; set; } - public byte[]? DocResult { get; init; } + public byte[]? DocResult { get; init; } - public IEnumerable? Documents { get; set; } - } + public IEnumerable? Documents { get; set; } } \ No newline at end of file diff --git a/EnvelopeGenerator.Application/DTOs/EnvelopeHistory/EnvelopeHistoryCreateDto.cs b/EnvelopeGenerator.Application/DTOs/EnvelopeHistory/EnvelopeHistoryCreateDto.cs index 731b33a1..34235c5b 100644 --- a/EnvelopeGenerator.Application/DTOs/EnvelopeHistory/EnvelopeHistoryCreateDto.cs +++ b/EnvelopeGenerator.Application/DTOs/EnvelopeHistory/EnvelopeHistoryCreateDto.cs @@ -1,12 +1,34 @@ using Microsoft.AspNetCore.Mvc; -namespace EnvelopeGenerator.Application.DTOs.EnvelopeHistory +namespace EnvelopeGenerator.Application.DTOs.EnvelopeHistory; + +/// +/// Data Transfer Object for creating a new envelope history record. +/// +public class EnvelopeHistoryCreateDto { - [ApiExplorerSettings(IgnoreApi = true)] - public record EnvelopeHistoryCreateDto( - int EnvelopeId, - string UserReference, - int Status, - DateTime? ActionDate, - string? Comment = null); + /// + /// Gets or sets the identifier of the envelope. + /// + public int EnvelopeId { get; set; } + + /// + /// Gets or sets the user reference associated with the action. + /// + public required string UserReference { get; set; } + + /// + /// Gets or sets the status of the envelope at the time of the action. + /// + public int Status { get; set; } + + /// + /// Gets or sets the date and time when the action occurred. + /// + public DateTime? ActionDate { get; set; } + + /// + /// Gets or sets an optional comment related to the action. + /// + public string? Comment { get; set; } } \ No newline at end of file diff --git a/EnvelopeGenerator.Application/DTOs/EnvelopeTypeDto.cs b/EnvelopeGenerator.Application/DTOs/EnvelopeTypeDto.cs index 05be1eac..6ab24f4c 100644 --- a/EnvelopeGenerator.Application/DTOs/EnvelopeTypeDto.cs +++ b/EnvelopeGenerator.Application/DTOs/EnvelopeTypeDto.cs @@ -1,23 +1,86 @@ using DigitalData.Core.Abstractions; using Microsoft.AspNetCore.Mvc; -namespace EnvelopeGenerator.Application.DTOs +namespace EnvelopeGenerator.Application.DTOs; + +/// +/// Data Transfer Object representing a type of envelope with its configuration settings. +/// +[ApiExplorerSettings(IgnoreApi = true)] +public class EnvelopeTypeDto : IUnique { - [ApiExplorerSettings(IgnoreApi = true)] - public record EnvelopeTypeDto( - int Id, - string Title, - string Language, - int? ExpiresDays, - int? CertificationType, - bool? UseAccessCode, - int? FinalEmailToCreator, - int? FinalEmailToReceivers, - DateTime AddedWhen, - DateTime? ChangedWhen, - int? ExpiresWarningDays, - bool? SendReminderEmails, - int? FirstReminderDays, - int? ReminderIntervalDays, - int? ContractType) : IUnique; + /// + /// Gets or sets the unique identifier of the envelope type. + /// + public int Id { get; set; } + + /// + /// Gets or sets the title of the envelope type. + /// + public string Title { get; set; } + + /// + /// Gets or sets the language code used in this envelope type. + /// + public string Language { get; set; } + + /// + /// Gets or sets the number of days after which the envelope expires. + /// + public int? ExpiresDays { get; set; } + + /// + /// Gets or sets the certification type identifier. + /// + public int? CertificationType { get; set; } + + /// + /// Gets or sets a value indicating whether an access code is required. + /// + public bool? UseAccessCode { get; set; } + + /// + /// Gets or sets the final email template ID to be sent to the creator. + /// + public int? FinalEmailToCreator { get; set; } + + /// + /// Gets or sets the final email template ID to be sent to the receivers. + /// + public int? FinalEmailToReceivers { get; set; } + + /// + /// Gets or sets the timestamp when this envelope type was added. + /// + public DateTime AddedWhen { get; set; } + + /// + /// Gets or sets the timestamp when this envelope type was last changed. + /// + public DateTime? ChangedWhen { get; set; } + + /// + /// Gets or sets the number of days before expiry when a warning should be sent. + /// + public int? ExpiresWarningDays { get; set; } + + /// + /// Gets or sets a value indicating whether reminder emails should be sent. + /// + public bool? SendReminderEmails { get; set; } + + /// + /// Gets or sets the number of days before the first reminder is sent. + /// + public int? FirstReminderDays { get; set; } + + /// + /// Gets or sets the interval in days between reminder emails. + /// + public int? ReminderIntervalDays { get; set; } + + /// + /// Gets or sets the contract type associated with the envelope type. + /// + public int? ContractType { get; set; } } \ No newline at end of file diff --git a/EnvelopeGenerator.Application/DTOs/Receiver/ReceiverCreateDto.cs b/EnvelopeGenerator.Application/DTOs/Receiver/ReceiverCreateDto.cs index 068501b4..c05865bb 100644 --- a/EnvelopeGenerator.Application/DTOs/Receiver/ReceiverCreateDto.cs +++ b/EnvelopeGenerator.Application/DTOs/Receiver/ReceiverCreateDto.cs @@ -20,7 +20,7 @@ public record ReceiverCreateDto } [EmailAddress] - public string EmailAddress { get; init; } + public required string EmailAddress { get; init; } public string? TotpSecretkey { get; init; } diff --git a/EnvelopeGenerator.Application/DTOs/Receiver/ReceiverReadDto.cs b/EnvelopeGenerator.Application/DTOs/Receiver/ReceiverReadDto.cs index 4f2912a6..c7e7f6ed 100644 --- a/EnvelopeGenerator.Application/DTOs/Receiver/ReceiverReadDto.cs +++ b/EnvelopeGenerator.Application/DTOs/Receiver/ReceiverReadDto.cs @@ -1,5 +1,4 @@ using DigitalData.Core.Abstractions; -using DigitalData.Core.DTO; using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver; using Microsoft.AspNetCore.Mvc; using System.Text.Json.Serialization; @@ -7,19 +6,27 @@ using System.Text.Json.Serialization; namespace EnvelopeGenerator.Application.DTOs.Receiver; [ApiExplorerSettings(IgnoreApi = true)] -public record ReceiverReadDto( - int Id, - string EmailAddress, - string Signature, - DateTime AddedWhen - ) : BaseDTO(Id), IUnique +public class ReceiverReadDto : IUnique { + public int Id { get; set; } + + public string EmailAddress { get; set; } + + public string Signature { get; set; } + + public DateTime AddedWhen { get; set; } + [JsonIgnore] - public IEnumerable? EnvelopeReceivers { get; init; } + public IEnumerable? EnvelopeReceivers { get; set; } public string? LastUsedName => EnvelopeReceivers?.LastOrDefault()?.Name; public string? TotpSecretkey { get; set; } = null; public DateTime? TfaRegDeadline { get; set; } -}; \ No newline at end of file + + public override int GetHashCode() + { + return Id.GetHashCode(); + } +} \ No newline at end of file diff --git a/EnvelopeGenerator.Application/DTOs/Receiver/ReceiverUpdateDto.cs b/EnvelopeGenerator.Application/DTOs/Receiver/ReceiverUpdateDto.cs index f4d89410..203df159 100644 --- a/EnvelopeGenerator.Application/DTOs/Receiver/ReceiverUpdateDto.cs +++ b/EnvelopeGenerator.Application/DTOs/Receiver/ReceiverUpdateDto.cs @@ -3,5 +3,26 @@ using Microsoft.AspNetCore.Mvc; namespace EnvelopeGenerator.Application.DTOs.Receiver; +/// +/// Data Transfer Object for updating a receiver's information. +/// [ApiExplorerSettings(IgnoreApi = true)] -public record ReceiverUpdateDto(int Id, string? TotpSecretkey = null, DateTime? TfaRegDeadline = null) : IUnique; \ No newline at end of file +public class ReceiverUpdateDto : IUnique +{ + /// + /// Gets or sets the unique identifier of the receiver. + /// + public int Id { get; set; } + + /// + /// Gets or sets the TOTP (Time-based One-Time Password) secret key. + /// Optional. + /// + public string? TotpSecretkey { get; set; } + + /// + /// Gets or sets the deadline for two-factor authentication registration. + /// Optional. + /// + public DateTime? TfaRegDeadline { get; set; } +} \ No newline at end of file diff --git a/EnvelopeGenerator.Application/DTOs/UserReceiverDto.cs b/EnvelopeGenerator.Application/DTOs/UserReceiverDto.cs index 5a46789f..b46c3e0c 100644 --- a/EnvelopeGenerator.Application/DTOs/UserReceiverDto.cs +++ b/EnvelopeGenerator.Application/DTOs/UserReceiverDto.cs @@ -1,15 +1,46 @@ using DigitalData.Core.Abstractions; using Microsoft.AspNetCore.Mvc; -namespace EnvelopeGenerator.Application.DTOs +namespace EnvelopeGenerator.Application.DTOs; + +/// +/// Data Transfer Object representing a user receiver with associated details. +/// +[ApiExplorerSettings(IgnoreApi = true)] +public class UserReceiverDto : IUnique { - [ApiExplorerSettings(IgnoreApi = true)] - public record UserReceiverDto( - int Id, - int UserId, - int ReceiverId, - string Name, - string CompanyName, - string JobTitle, - DateTime AddedWhen) : IUnique; + /// + /// Gets or sets the unique identifier of the user receiver. + /// + public int Id { get; set; } + + /// + /// Gets or sets the identifier of the user associated with the receiver. + /// + public int UserId { get; set; } + + /// + /// Gets or sets the identifier of the receiver. + /// + public int ReceiverId { get; set; } + + /// + /// Gets or sets the name of the receiver. + /// + public string Name { get; set; } + + /// + /// Gets or sets the company name of the receiver. + /// + public string CompanyName { get; set; } + + /// + /// Gets or sets the job title of the receiver. + /// + public string JobTitle { get; set; } + + /// + /// Gets or sets the timestamp when the user receiver was added. + /// + public DateTime AddedWhen { get; set; } } \ No newline at end of file