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))