mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-10-01 15:43:14 +00:00
fix(workorders): match registry service filters exactly
This commit is contained in:
parent
0894b20e59
commit
0cd0d3b066
2 changed files with 64 additions and 14 deletions
|
|
@ -265,20 +265,20 @@ namespace SeaHaven.DataServices.Helpers
|
|||
return query;
|
||||
|
||||
return query.Where(w =>
|
||||
normalized.Any(pm =>
|
||||
w.ServiceId.HasValue
|
||||
? (w.ServiceDefinition != null
|
||||
&& w.ServiceDefinition.IsActive
|
||||
&& w.ServiceDefinition.IsDeleted != true
|
||||
&& !(w.LifecycleStatus == LifecycleStatus.Completed
|
||||
|| (w.LifecycleStatus == null
|
||||
&& CompletedLegacyStatuses.Contains(((w.LegacyStatus ?? w.Status) ?? "").Trim().ToLower())))
|
||||
? (w.ServiceDefinition.Name ?? "").ToLower().Contains(pm)
|
||||
: ((w.ServiceDefinition != null
|
||||
&& (w.ServiceDefinition.Name ?? "").ToLower().Contains(pm))
|
||||
|| (w.ServiceNameSnapshot ?? w.Trade ?? w.Problem ?? "").ToLower().Contains(pm)))
|
||||
: (w.Trade ?? "").ToLower().Contains(pm)
|
||||
|| (w.Problem ?? "").ToLower().Contains(pm)));
|
||||
w.ServiceId.HasValue
|
||||
? (w.ServiceDefinition != null
|
||||
&& w.ServiceDefinition.IsActive
|
||||
&& w.ServiceDefinition.IsDeleted != true
|
||||
&& !(w.LifecycleStatus == LifecycleStatus.Completed
|
||||
|| (w.LifecycleStatus == null
|
||||
&& CompletedLegacyStatuses.Contains(((w.LegacyStatus ?? w.Status) ?? "").Trim().ToLower())))
|
||||
? normalized.Contains(((w.ServiceDefinition.Name ?? "").Trim()).ToLower())
|
||||
: ((w.ServiceDefinition != null
|
||||
&& normalized.Contains(((w.ServiceDefinition.Name ?? "").Trim()).ToLower()))
|
||||
|| normalized.Contains(((w.ServiceNameSnapshot ?? w.Trade ?? w.Problem ?? "").Trim()).ToLower())))
|
||||
: normalized.Any(pm =>
|
||||
(w.Trade ?? "").ToLower().Contains(pm)
|
||||
|| (w.Problem ?? "").ToLower().Contains(pm)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -39,6 +39,24 @@ public sealed class WorkOrderServiceRegistryFilterRelationalTests
|
|||
Trade = "Electrical",
|
||||
IconKey = "electrical",
|
||||
IsActive = true
|
||||
},
|
||||
new Service
|
||||
{
|
||||
Id = 30,
|
||||
Name = "QA Service",
|
||||
NormalizedName = "QA SERVICE",
|
||||
Trade = "Electrical",
|
||||
IconKey = "electrical",
|
||||
IsActive = true
|
||||
},
|
||||
new Service
|
||||
{
|
||||
Id = 31,
|
||||
Name = "QA Service Extended",
|
||||
NormalizedName = "QA SERVICE EXTENDED",
|
||||
Trade = "Electrical",
|
||||
IconKey = "electrical",
|
||||
IsActive = true
|
||||
});
|
||||
context.workOrders.AddRange(
|
||||
new WorkOrder
|
||||
|
|
@ -76,6 +94,22 @@ public sealed class WorkOrderServiceRegistryFilterRelationalTests
|
|||
ServiceNameSnapshot = "Completed Archive Beta",
|
||||
Trade = "Completed Archive Beta",
|
||||
Status = "Done"
|
||||
},
|
||||
new WorkOrder
|
||||
{
|
||||
Id = 6,
|
||||
ServiceId = 30,
|
||||
ServiceNameSnapshot = "QA Service",
|
||||
Trade = "QA Service",
|
||||
LifecycleStatus = LifecycleStatus.Scheduled
|
||||
},
|
||||
new WorkOrder
|
||||
{
|
||||
Id = 7,
|
||||
ServiceId = 31,
|
||||
ServiceNameSnapshot = "QA Service Extended",
|
||||
Trade = "QA Service Extended",
|
||||
LifecycleStatus = LifecycleStatus.Scheduled
|
||||
});
|
||||
await context.SaveChangesAsync();
|
||||
|
||||
|
|
@ -147,6 +181,18 @@ public sealed class WorkOrderServiceRegistryFilterRelationalTests
|
|||
.OrderBy(id => id)
|
||||
.ToListAsync();
|
||||
|
||||
var exactRegistryNameMatches = await WorkOrderBoardQueryFilters
|
||||
.ApplyPmTypeFilter(context.workOrders.AsNoTracking(), new[] { "QA Service" })
|
||||
.Select(w => w.Id)
|
||||
.OrderBy(id => id)
|
||||
.ToListAsync();
|
||||
|
||||
var multipleRegistryNameMatches = await WorkOrderBoardQueryFilters
|
||||
.ApplyPmTypeFilter(context.workOrders.AsNoTracking(), new[] { "QA Service", "QA Service Extended" })
|
||||
.Select(w => w.Id)
|
||||
.OrderBy(id => id)
|
||||
.ToListAsync();
|
||||
|
||||
var legacyTradeMatches = await WorkOrderBoardQueryFilters
|
||||
.ApplyPmTypeFilter(context.workOrders.AsNoTracking(), new[] { "Legacy Cooling" })
|
||||
.Select(w => w.Id)
|
||||
|
|
@ -170,6 +216,8 @@ public sealed class WorkOrderServiceRegistryFilterRelationalTests
|
|||
$"completed-snapshot-filter={string.Join(',', completedSnapshotMatches)}",
|
||||
$"legacy-completed-snapshot-filter={string.Join(',', legacyCompletedSnapshotMatches)}",
|
||||
$"current-name-alias-filter={string.Join(',', currentNameAliasMatches)}",
|
||||
$"exact-registry-filter={string.Join(',', exactRegistryNameMatches)}",
|
||||
$"multiple-registry-filter={string.Join(',', multipleRegistryNameMatches)}",
|
||||
$"legacy-trade-filter={string.Join(',', legacyTradeMatches)}",
|
||||
$"legacy-problem-filter={string.Join(',', legacyProblemMatches)}"
|
||||
});
|
||||
|
|
@ -186,6 +234,8 @@ public sealed class WorkOrderServiceRegistryFilterRelationalTests
|
|||
"completed-snapshot-filter=4",
|
||||
"legacy-completed-snapshot-filter=5",
|
||||
"current-name-alias-filter=1,4,5",
|
||||
"exact-registry-filter=6",
|
||||
"multiple-registry-filter=6,7",
|
||||
"legacy-trade-filter=3",
|
||||
"legacy-problem-filter=3"
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue