namespace JdeScoping.Client.Models; /// /// Represents a valid combination of search filter criteria. /// Each combination defines which filter panels should be visible for a given search type. /// public class ValidCombination { public int Id { get; private init; } public string Name { get; private init; } = string.Empty; public bool Timespan { get; private init; } public bool WorkOrder { get; private init; } public bool ItemNumber { get; private init; } public bool ProfitCenter { get; private init; } public bool WorkCenter { get; private init; } public bool ComponentLot { get; private init; } public bool Operator { get; private init; } public bool ItemOperationMis { get; private init; } public bool ExtractMis { get; private init; } /// /// Checks if the given filter flags match this combination. /// public bool Matches( bool timespan, bool workOrder, bool itemNumber, bool profitCenter, bool workCenter, bool componentLot, bool @operator, bool itemOperationMis, bool extractMis) { return Timespan == timespan && WorkOrder == workOrder && ItemNumber == itemNumber && ProfitCenter == profitCenter && WorkCenter == workCenter && ComponentLot == componentLot && Operator == @operator && ItemOperationMis == itemOperationMis && ExtractMis == extractMis; } /// /// Gets all 16 valid search type combinations. /// public static IReadOnlyList GetAll() => [ new() { Id = 10, Name = "Work Order", Timespan = false, WorkOrder = true, ItemNumber = false, ProfitCenter = false, WorkCenter = false, ComponentLot = false, Operator = false, ItemOperationMis = false, ExtractMis = false }, new() { Id = 20, Name = "Component Lot", Timespan = false, WorkOrder = false, ItemNumber = false, ProfitCenter = false, WorkCenter = false, ComponentLot = true, Operator = false, ItemOperationMis = false, ExtractMis = false }, new() { Id = 30, Name = "Time Span + Profit Center", Timespan = true, WorkOrder = false, ItemNumber = false, ProfitCenter = true, WorkCenter = false, ComponentLot = false, Operator = false, ItemOperationMis = false, ExtractMis = false }, new() { Id = 40, Name = "Time Span + Work Center", Timespan = true, WorkOrder = false, ItemNumber = false, ProfitCenter = false, WorkCenter = true, ComponentLot = false, Operator = false, ItemOperationMis = false, ExtractMis = false }, new() { Id = 50, Name = "Time Span + Operator", Timespan = true, WorkOrder = false, ItemNumber = false, ProfitCenter = false, WorkCenter = false, ComponentLot = false, Operator = true, ItemOperationMis = false, ExtractMis = false }, new() { Id = 60, Name = "Time Span + Profit Center + Item Number", Timespan = true, WorkOrder = false, ItemNumber = true, ProfitCenter = true, WorkCenter = false, ComponentLot = false, Operator = false, ItemOperationMis = false, ExtractMis = false }, new() { Id = 70, Name = "Time Span + Profit Center + Item/Operation/MIS", Timespan = true, WorkOrder = false, ItemNumber = false, ProfitCenter = true, WorkCenter = false, ComponentLot = false, Operator = false, ItemOperationMis = true, ExtractMis = false }, new() { Id = 80, Name = "Time Span + Profit Center + Work Order + Item/Operation/MIS", Timespan = true, WorkOrder = true, ItemNumber = false, ProfitCenter = true, WorkCenter = false, ComponentLot = false, Operator = false, ItemOperationMis = true, ExtractMis = false }, new() { Id = 90, Name = "Time Span + Profit Center + Extract MIS", Timespan = true, WorkOrder = false, ItemNumber = false, ProfitCenter = true, WorkCenter = false, ComponentLot = false, Operator = false, ItemOperationMis = false, ExtractMis = true }, new() { Id = 100, Name = "Time Span + Work Center + Item Number", Timespan = true, WorkOrder = false, ItemNumber = true, ProfitCenter = false, WorkCenter = true, ComponentLot = false, Operator = false, ItemOperationMis = false, ExtractMis = false }, new() { Id = 110, Name = "Time Span + Work Center + Extract MIS", Timespan = true, WorkOrder = false, ItemNumber = false, ProfitCenter = false, WorkCenter = true, ComponentLot = false, Operator = false, ItemOperationMis = false, ExtractMis = true }, new() { Id = 120, Name = "Time Span + Work Center + Item/Operation/MIS", Timespan = true, WorkOrder = false, ItemNumber = false, ProfitCenter = false, WorkCenter = true, ComponentLot = false, Operator = false, ItemOperationMis = true, ExtractMis = false }, new() { Id = 130, Name = "Time Span + Work Center + Work Order + Item/Operation/MIS", Timespan = true, WorkOrder = true, ItemNumber = false, ProfitCenter = false, WorkCenter = true, ComponentLot = false, Operator = false, ItemOperationMis = true, ExtractMis = false }, new() { Id = 140, Name = "Time Span + Item Number", Timespan = true, WorkOrder = false, ItemNumber = true, ProfitCenter = false, WorkCenter = false, ComponentLot = false, Operator = false, ItemOperationMis = false, ExtractMis = false }, new() { Id = 150, Name = "Time Span + Work Center + Operator", Timespan = true, WorkOrder = false, ItemNumber = false, ProfitCenter = false, WorkCenter = true, ComponentLot = false, Operator = true, ItemOperationMis = false, ExtractMis = false }, new() { Id = 160, Name = "Time Span + Profit Center + Operator", Timespan = true, WorkOrder = false, ItemNumber = false, ProfitCenter = true, WorkCenter = false, ComponentLot = false, Operator = true, ItemOperationMis = false, ExtractMis = false } ]; }