Enhance DTOs and controller with documentation and checks
- Added XML documentation comments to properties in `EnvelopeHistoryDto.cs`. - Changed `EnvelopeId` to non-nullable in `ReadHistoryQuery.cs` and added `Status` parameter for filtering. - Removed unused `using` directives in `HistoryController.cs` and updated `GetAllAsync` to filter histories by `Status`, returning `NotFound` if no results are found.
This commit is contained in:
@@ -5,19 +5,32 @@ using EnvelopeGenerator.Application.DTOs.Receiver;
|
|||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using static EnvelopeGenerator.Common.Constants;
|
using static EnvelopeGenerator.Common.Constants;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.DTOs.EnvelopeHistory
|
namespace EnvelopeGenerator.Application.DTOs.EnvelopeHistory;
|
||||||
{
|
|
||||||
[ApiExplorerSettings(IgnoreApi = true)]
|
/// <summary>
|
||||||
public record EnvelopeHistoryDto(
|
///
|
||||||
long Id,
|
/// </summary>
|
||||||
int EnvelopeId,
|
/// <param name="Id"></param>
|
||||||
string UserReference,
|
/// <param name="EnvelopeId"></param>
|
||||||
int Status,
|
/// <param name="UserReference"></param>
|
||||||
string? StatusName,
|
/// <param name="Status"></param>
|
||||||
DateTime AddedWhen,
|
/// <param name="StatusName"></param>
|
||||||
DateTime? ActionDate,
|
/// <param name="AddedWhen"></param>
|
||||||
UserCreateDto? Sender,
|
/// <param name="ActionDate"></param>
|
||||||
ReceiverReadDto? Receiver,
|
/// <param name="Sender"></param>
|
||||||
ReferenceType ReferenceType,
|
/// <param name="Receiver"></param>
|
||||||
string? Comment = null) : BaseDTO<long>(Id), IUnique<long>;
|
/// <param name="ReferenceType"></param>
|
||||||
}
|
/// <param name="Comment"></param>
|
||||||
|
[ApiExplorerSettings(IgnoreApi = true)]
|
||||||
|
public record EnvelopeHistoryDto(
|
||||||
|
long Id,
|
||||||
|
int EnvelopeId,
|
||||||
|
string UserReference,
|
||||||
|
int Status,
|
||||||
|
string? StatusName,
|
||||||
|
DateTime AddedWhen,
|
||||||
|
DateTime? ActionDate,
|
||||||
|
UserCreateDto? Sender,
|
||||||
|
ReceiverReadDto? Receiver,
|
||||||
|
ReferenceType ReferenceType,
|
||||||
|
string? Comment = null) : BaseDTO<long>(Id), IUnique<long>;
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
using EnvelopeGenerator.Application.Envelopes.Queries.Read;
|
using EnvelopeGenerator.Common;
|
||||||
using EnvelopeGenerator.Application.Receivers.Queries.Read;
|
|
||||||
using EnvelopeGenerator.Common;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Histories.Queries.Read;
|
namespace EnvelopeGenerator.Application.Histories.Queries.Read;
|
||||||
|
|
||||||
@@ -9,9 +7,11 @@ namespace EnvelopeGenerator.Application.Histories.Queries.Read;
|
|||||||
/// Repräsentiert eine Abfrage für die Verlaufshistorie eines Umschlags.
|
/// Repräsentiert eine Abfrage für die Verlaufshistorie eines Umschlags.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="EnvelopeId">Die eindeutige Kennung des Umschlags.</param>
|
/// <param name="EnvelopeId">Die eindeutige Kennung des Umschlags.</param>
|
||||||
|
/// <param name="Status">Der Status des Umschlags, der abgefragt werden soll. Kann optional angegeben werden, um die Ergebnisse zu filtern.</param>
|
||||||
/// <param name="Related">Abfrage, die angibt, worauf sich der Datensatz bezieht. Ob er sich auf den Empfänger, den Sender oder das System bezieht, wird durch 0, 1 bzw. 2 dargestellt.</param>
|
/// <param name="Related">Abfrage, die angibt, worauf sich der Datensatz bezieht. Ob er sich auf den Empfänger, den Sender oder das System bezieht, wird durch 0, 1 bzw. 2 dargestellt.</param>
|
||||||
/// <param name="OnlyLast">Abfrage zur Steuerung, ob nur der aktuelle Status oder der gesamte Datensatz zurückgegeben wird.</param>
|
/// <param name="OnlyLast">Abfrage zur Steuerung, ob nur der aktuelle Status oder der gesamte Datensatz zurückgegeben wird.</param>
|
||||||
public record ReadHistoryQuery(
|
public record ReadHistoryQuery(
|
||||||
int? EnvelopeId = null,
|
int EnvelopeId,
|
||||||
|
Constants.EnvelopeStatus? Status = null,
|
||||||
Constants.ReferenceType? Related = null,
|
Constants.ReferenceType? Related = null,
|
||||||
bool? OnlyLast = true);
|
bool? OnlyLast = true);
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
using DigitalData.EmailProfilerDispatcher.Abstraction.Entities;
|
using EnvelopeGenerator.Application.Contracts.Services;
|
||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
|
||||||
using EnvelopeGenerator.Application.Histories.Queries.Read;
|
using EnvelopeGenerator.Application.Histories.Queries.Read;
|
||||||
using EnvelopeGenerator.Extensions;
|
using EnvelopeGenerator.Extensions;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
@@ -7,7 +6,6 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
using Microsoft.Extensions.Caching.Memory;
|
using Microsoft.Extensions.Caching.Memory;
|
||||||
using static EnvelopeGenerator.Common.Constants;
|
using static EnvelopeGenerator.Common.Constants;
|
||||||
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.GeneratorAPI.Controllers;
|
namespace EnvelopeGenerator.GeneratorAPI.Controllers;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -109,8 +107,6 @@ public class HistoryController : ControllerBase
|
|||||||
[Authorize]
|
[Authorize]
|
||||||
public async Task<IActionResult> GetAllAsync([FromQuery] ReadHistoryQuery history)
|
public async Task<IActionResult> GetAllAsync([FromQuery] ReadHistoryQuery history)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
bool withReceiver = false;
|
bool withReceiver = false;
|
||||||
bool withSender = false;
|
bool withSender = false;
|
||||||
|
|
||||||
@@ -130,6 +126,12 @@ public class HistoryController : ControllerBase
|
|||||||
withSender: withSender,
|
withSender: withSender,
|
||||||
withReceiver: withReceiver);
|
withReceiver: withReceiver);
|
||||||
|
|
||||||
return Ok(histories);
|
if(history.Status is not null)
|
||||||
|
histories = histories.Where(h => h.Status == (int)history.Status);
|
||||||
|
|
||||||
|
if (!histories.Any())
|
||||||
|
return NotFound();
|
||||||
|
|
||||||
|
return Ok((history.OnlyLast ?? false) ? histories.MaxBy(h => h.AddedWhen) : histories);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user