diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowDefinitionStore.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowDefinitionStore.cs index 02e5286c1..226bb40e9 100644 --- a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowDefinitionStore.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowDefinitionStore.cs @@ -206,7 +206,7 @@ public class EFCoreWorkflowDefinitionStore(EntityStore x.Name == filter.Name); if (filter.Names != null) queryable = queryable.Where(x => filter.Names.Contains(x.Name!)); if (filter.UsableAsActivity != null) queryable = queryable.Where(x => EF.Property(x, "UsableAsActivity") == filter.UsableAsActivity); - if (!string.IsNullOrWhiteSpace(filter.SearchTerm)) queryable = queryable.Where(x => x.Name!.Contains(filter.SearchTerm) || x.Description!.Contains(filter.SearchTerm) || x.Id.Contains(filter.SearchTerm) || x.DefinitionId.Contains(filter.SearchTerm)); + if (!string.IsNullOrWhiteSpace(filter.SearchTerm)) queryable = queryable.Where(x => x.Name!.ToLower().Contains(filter.SearchTerm.ToLower()) || x.Description!.ToLower().Contains(filter.SearchTerm.ToLower()) || x.Id.Contains(filter.SearchTerm) || x.DefinitionId.Contains(filter.SearchTerm)); // TEMP: IsSystem may be null when upgrading from older versions of Elsa to 3.2. See issue #5366. // In a future version, we should remove this check and simply do queryable.Where(x => x.IsSystem == filter.IsSystem). 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 a69047659..785de7b1d 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/List/Endpoint.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowInstances/List/Endpoint.cs @@ -38,6 +38,7 @@ internal class List(IWorkflowInstanceStore store) : ElsaEndpoint x.Name == Name); if (Names != null) queryable = queryable.Where(x => Names.Contains(x.Name!)); if (UsableAsActivity != null) queryable = queryable.Where(x => x.Options.UsableAsActivity == UsableAsActivity); - if (!string.IsNullOrWhiteSpace(SearchTerm)) queryable = queryable.Where(x => x.Name!.Contains(SearchTerm) || x.Description!.Contains(SearchTerm) || x.Id.Contains(SearchTerm) || x.DefinitionId.Contains(SearchTerm)); + if (!string.IsNullOrWhiteSpace(SearchTerm)) queryable = queryable.Where(x => x.Name!.ToLower().Contains(SearchTerm.ToLower()) || x.Description!.ToLower().Contains(SearchTerm.ToLower()) || x.Id.Contains(SearchTerm) || x.DefinitionId.Contains(SearchTerm)); if (IsSystem != null) queryable = queryable.Where(x => x.IsSystem == IsSystem); if (IsReadonly != null) queryable = queryable.Where(x => x.IsReadonly == IsReadonly); diff --git a/src/modules/Elsa.Workflows.Management/Filters/WorkflowInstanceFilter.cs b/src/modules/Elsa.Workflows.Management/Filters/WorkflowInstanceFilter.cs index e578468c5..f279df52a 100644 --- a/src/modules/Elsa.Workflows.Management/Filters/WorkflowInstanceFilter.cs +++ b/src/modules/Elsa.Workflows.Management/Filters/WorkflowInstanceFilter.cs @@ -25,6 +25,11 @@ public class WorkflowInstanceFilter /// Filter workflow instances that match the specified search term. /// public string? SearchTerm { get; set; } + + /// + /// Filter workflow instances that match the specified name. + /// + public string? Name { get; set; } /// /// Filter workflow instances by definition ID. @@ -125,6 +130,7 @@ public class WorkflowInstanceFilter if (filter.WorkflowSubStatuses != null) query = query.Where(x => filter.WorkflowSubStatuses.Contains(x.SubStatus)); if (filter.HasIncidents != null) query = filter.HasIncidents == true ? query.Where(x => x.IncidentCount > 0) : query.Where(x => x.IncidentCount == 0); if (filter.IsSystem != null) query = query.Where(x => x.IsSystem == filter.IsSystem); + if (filter.Name != null) query = query.Where(x => x.Name!.ToLower().Contains(filter.Name.ToLower())); if (TimestampFilters != null) { @@ -160,7 +166,7 @@ public class WorkflowInstanceFilter { query = from instance in query - where instance.Name!.Contains(searchTerm) + where instance.Name!.ToLower().Contains(searchTerm.ToLower()) || instance.DefinitionVersionId.Contains(searchTerm) || instance.DefinitionId.Contains(searchTerm) || instance.Id.Contains(searchTerm)