diff --git a/EnvelopeGenerator.Domain/Entities/EnvelopeHistory.cs b/EnvelopeGenerator.Domain/Entities/EnvelopeHistory.cs index 5c0f0cd1..55313e36 100644 --- a/EnvelopeGenerator.Domain/Entities/EnvelopeHistory.cs +++ b/EnvelopeGenerator.Domain/Entities/EnvelopeHistory.cs @@ -19,7 +19,7 @@ namespace EnvelopeGenerator.Domain.Entities [Required] [Column("USER_REFERENCE", TypeName = "nvarchar(128)")] - public string UserReference { get; set; } + public required string UserReference { get; init; } [Required] [Column("STATUS")] diff --git a/EnvelopeGenerator.GeneratorAPI/Controllers/HistoryController.cs b/EnvelopeGenerator.GeneratorAPI/Controllers/HistoryController.cs index e5426598..02516ecb 100644 --- a/EnvelopeGenerator.GeneratorAPI/Controllers/HistoryController.cs +++ b/EnvelopeGenerator.GeneratorAPI/Controllers/HistoryController.cs @@ -1,6 +1,8 @@ using EnvelopeGenerator.Application.Contracts; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using System; +using static EnvelopeGenerator.Common.Constants; namespace EnvelopeGenerator.GeneratorAPI.Controllers { @@ -18,5 +20,29 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers _logger = logger; _service = service; } + + [HttpGet] + public async Task GetAllAsync([FromQuery] int? envelopeId = null, [FromQuery] string? userReference = null, [FromQuery] int? referenceType = null, [FromQuery] int? status = null, [FromQuery] bool withSender = false, [FromQuery] bool withReceiver = false) + { + ReferenceType? refTypEnum = null; + + if (referenceType is int refTypInt) + { + if (Enum.IsDefined(typeof(ReferenceType), refTypInt)) + refTypEnum = (ReferenceType)refTypInt; + } + else + throw new ArgumentException($"The provided referenceType '{referenceType}' is not valid. It must correspond to a valid value in the {nameof(ReferenceType)} enum."); + + var histories = await _service.ReadAsync( + envelopeId: envelopeId, + userReference: userReference, + referenceType: refTypEnum, + status: status, + withSender: withSender, + withReceiver: withReceiver); + + return Ok(histories); + } } -} +} \ No newline at end of file