From f7e224eb6423eb65b6651cb877b508ff476c46b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9chir=20BEN=20AMEUR?= <32399944+bbenameur@users.noreply.github.com> Date: Sat, 17 Feb 2024 09:37:23 +0100 Subject: [PATCH] feature: add created date time to filter (#4932) Co-authored-by: BEN AMEUR --- .../Endpoints/WorkflowInstances/List/Endpoint.cs | 4 +++- .../Endpoints/WorkflowInstances/List/Models.cs | 2 ++ .../Filters/WorkflowInstanceFilter.cs | 12 ++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/List/Endpoint.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/List/Endpoint.cs index 658e757f4..3b56ef650 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/List/Endpoint.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/List/Endpoint.cs @@ -39,7 +39,9 @@ internal class List : ElsaEndpoint WorkflowStatus = request.Status, WorkflowSubStatus = request.SubStatus, WorkflowStatuses = request.Statuses?.Select(Enum.Parse).ToList(), - WorkflowSubStatuses = request.SubStatuses?.Select(Enum.Parse).ToList() + WorkflowSubStatuses = request.SubStatuses?.Select(Enum.Parse).ToList(), + ToCreatedAt = request.ToCreatedAt, + FromCreatedAt = request.FromCreatedAt, }; var summaries = await FindAsync(request, filter, pageArgs, cancellationToken); diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/List/Models.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/List/Models.cs index 4c3998d0c..2e9048e6f 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/List/Models.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/List/Models.cs @@ -19,6 +19,8 @@ public class Request public ICollection? 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 diff --git a/src/modules/Elsa.Workflows.Management/Filters/WorkflowInstanceFilter.cs b/src/modules/Elsa.Workflows.Management/Filters/WorkflowInstanceFilter.cs index ee4a52de5..f22feec89 100644 --- a/src/modules/Elsa.Workflows.Management/Filters/WorkflowInstanceFilter.cs +++ b/src/modules/Elsa.Workflows.Management/Filters/WorkflowInstanceFilter.cs @@ -77,6 +77,16 @@ public class WorkflowInstanceFilter /// public ICollection? WorkflowSubStatuses { get; set; } + /// + /// Filter workflow instances by created date time, start from this date time. + /// + public DateTimeOffset? FromCreatedAt { get; set; } + + /// + /// Filter workflow instances by created date time, to this date time. + /// + public DateTimeOffset? ToCreatedAt { get; set; } + /// /// Applies the filter to the specified query. /// @@ -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))