feature: add created date time to filter (#4932)

Co-authored-by: BEN AMEUR <Bechir.BEN-AMEUR.ext@sodexo.com>
This commit is contained in:
Béchir BEN AMEUR 2024-02-17 09:37:23 +01:00 committed by GitHub
parent f85615fb8f
commit f7e224eb64
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 17 additions and 1 deletions

View file

@ -39,7 +39,9 @@ internal class List : ElsaEndpoint<Request, Response>
WorkflowStatus = request.Status,
WorkflowSubStatus = request.SubStatus,
WorkflowStatuses = request.Statuses?.Select(Enum.Parse<WorkflowStatus>).ToList(),
WorkflowSubStatuses = request.SubStatuses?.Select(Enum.Parse<WorkflowSubStatus>).ToList()
WorkflowSubStatuses = request.SubStatuses?.Select(Enum.Parse<WorkflowSubStatus>).ToList(),
ToCreatedAt = request.ToCreatedAt,
FromCreatedAt = request.FromCreatedAt,
};
var summaries = await FindAsync(request, filter, pageArgs, cancellationToken);

View file

@ -19,6 +19,8 @@ public class Request
public ICollection<string>? SubStatuses { get; set; }
public OrderByWorkflowInstance? OrderBy { get; set; }
public OrderDirection? OrderDirection { get; set; }
public DateTimeOffset? FromCreatedAt { get; set; }
public DateTimeOffset? ToCreatedAt { get; set; }
}
public class Response

View file

@ -77,6 +77,16 @@ public class WorkflowInstanceFilter
/// </summary>
public ICollection<WorkflowSubStatus>? WorkflowSubStatuses { get; set; }
/// <summary>
/// Filter workflow instances by created date time, start from this date time.
/// </summary>
public DateTimeOffset? FromCreatedAt { get; set; }
/// <summary>
/// Filter workflow instances by created date time, to this date time.
/// </summary>
public DateTimeOffset? ToCreatedAt { get; set; }
/// <summary>
/// Applies the filter to the specified query.
/// </summary>
@ -96,6 +106,8 @@ public class WorkflowInstanceFilter
if (filter.WorkflowSubStatus != null) query = query.Where(x => x.SubStatus == filter.WorkflowSubStatus);
if (filter.WorkflowStatuses != null) query = query.Where(x => filter.WorkflowStatuses.Contains(x.Status));
if (filter.WorkflowSubStatuses != null) query = query.Where(x => filter.WorkflowSubStatuses.Contains(x.SubStatus));
if (filter.ToCreatedAt is not null) query = query.Where(x => filter.ToCreatedAt >= x.CreatedAt);
if (filter.FromCreatedAt is not null) query = query.Where(x => filter.FromCreatedAt <= x.CreatedAt);
var searchTerm = filter.SearchTerm;
if (!string.IsNullOrWhiteSpace(searchTerm))