Add filtering for active and completed envelopes

Added `OnlyActive` and `OnlyCompleted` properties to the `ReadEnvelopeQuery` class to enable filtering envelopes by their active or completed status. Updated the `ReadEnvelopeQueryHandler` to apply these filters when the properties are set.

Enhanced the `EnvelopeStatus` class by introducing `Active` and `Completed` status lists and adding extension methods (`IsActive` and `IsCompleted`) to determine status categories. Included necessary `using` directives for `System` and `System.Linq`.
This commit is contained in:
2026-06-15 15:07:12 +02:00
parent 011960be75
commit 561b844e59
2 changed files with 43 additions and 2 deletions

View File

@@ -14,6 +14,16 @@ namespace EnvelopeGenerator.Application.Envelopes.Queries;
/// </summary> /// </summary>
public record ReadEnvelopeQuery : EnvelopeQueryBase, IRequest<IEnumerable<EnvelopeDto>> public record ReadEnvelopeQuery : EnvelopeQueryBase, IRequest<IEnumerable<EnvelopeDto>>
{ {
/// <summary>
///
/// </summary>
public bool OnlyActive { get; init; } = false;
/// <summary>
///
/// </summary>
public bool OnlyCompleted { get; init; } = false;
/// <summary> /// <summary>
/// Abfrage des Include des Umschlags /// Abfrage des Include des Umschlags
/// </summary> /// </summary>
@@ -132,6 +142,12 @@ public class ReadEnvelopeQueryHandler : IRequestHandler<ReadEnvelopeQuery, IEnum
query = query.Where(e => !status.Ignore.Contains(e.Status)); query = query.Where(e => !status.Ignore.Contains(e.Status));
} }
if(request is { OnlyActive: true })
query = query.Where(e => Status.Active.Contains(e.Status));
if (request is { OnlyCompleted: true })
query = query.Where(e => Status.Completed.Contains(e.Status));
var envelopes = await query var envelopes = await query
.Include(e => e.EnvelopeReceivers).ThenInclude(er => er.Receiver) .Include(e => e.EnvelopeReceivers).ThenInclude(er => er.Receiver)
.ToListAsync(cancel); .ToListAsync(cancel);

View File

@@ -1,8 +1,10 @@
using System.Collections.Generic; using System;
using System.Collections.Generic;
using System.Linq;
namespace EnvelopeGenerator.Domain.Constants namespace EnvelopeGenerator.Domain.Constants
{ {
// http://wiki.dd/xwiki13/bin/view/Anwendungen/Produkt-Handbuch/Sonstiges/SignFlow/Envelope%20Status/ // http://wiki.dd/xwiki_prod/bin/view/Anwendungen/Produkt-Handbuch/Sonstiges/signFLOW/signFLOW%20-%20Enwickler-Handbuch/4.%20Anhang/4.3%20Historie%20und%20Status%20der%20Umschl%C3%A4ge/
public enum EnvelopeStatus public enum EnvelopeStatus
{ {
Invalid = 0, Invalid = 0,
@@ -49,5 +51,28 @@ namespace EnvelopeGenerator.Domain.Constants
EnvelopeStatus.EnvelopeCreated, EnvelopeStatus.EnvelopeCreated,
EnvelopeStatus.DocumentMod_Rotation EnvelopeStatus.DocumentMod_Rotation
}; };
public static readonly List<EnvelopeStatus> Active = Enum.GetValues(typeof(EnvelopeStatus))
.Cast<EnvelopeStatus>()
.Where(status => status.IsActive())
.ToList();
public static readonly List<EnvelopeStatus> Completed = Enum.GetValues(typeof(EnvelopeStatus))
.Cast<EnvelopeStatus>()
.Where(status => status.IsCompleted())
.ToList();
}
public static class EnvelopeStatusExtensions
{
public static bool IsActive(this EnvelopeStatus status)
{
return status >= EnvelopeStatus.EnvelopeCreated && status < EnvelopeStatus.EnvelopePartlySigned;
}
public static bool IsCompleted(this EnvelopeStatus status)
{
return status >= EnvelopeStatus.EnvelopeCompletelySigned && status <= EnvelopeStatus.EnvelopeWithdrawn;
}
} }
} }