Merge pull request #6276 from LarsNijholt/fix/no-ref/improve-workflow-instance-definition-filtering
Implemented name filter to workflow instance filter and added case insensitivity to searching definitions and instances by name
This commit is contained in:
commit
279d55c22c
|
|
@ -206,7 +206,7 @@ public class EFCoreWorkflowDefinitionStore(EntityStore<ManagementElsaDbContext,
|
|||
if (filter.Name != null) queryable = queryable.Where(x => 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<bool>(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).
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ internal class List(IWorkflowInstanceStore store) : ElsaEndpoint<Request, Respon
|
|||
{
|
||||
IsSystem = request.IsSystem,
|
||||
SearchTerm = request.SearchTerm,
|
||||
Name = request.Name,
|
||||
DefinitionId = request.DefinitionId,
|
||||
DefinitionIds = request.DefinitionIds?.Any() == true ? request.DefinitionIds : null,
|
||||
Version = request.Version,
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ public class WorkflowDefinitionFilter
|
|||
if (Name != null) queryable = queryable.Where(x => 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);
|
||||
|
||||
|
|
|
|||
|
|
@ -25,6 +25,11 @@ public class WorkflowInstanceFilter
|
|||
/// Filter workflow instances that match the specified search term.
|
||||
/// </summary>
|
||||
public string? SearchTerm { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Filter workflow instances that match the specified name.
|
||||
/// </summary>
|
||||
public string? Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue