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 { /// /// The unique identifier for this combination. /// public int Id { get; private init; } /// /// The display name for this combination. /// public string Name { get; private init; } = string.Empty; /// /// Whether the timespan filter is included in this combination. /// public bool Timespan { get; private init; } /// /// Whether the work order filter is included in this combination. /// public bool WorkOrder { get; private init; } /// /// Whether the item number filter is included in this combination. /// public bool ItemNumber { get; private init; } /// /// Whether the profit center filter is included in this combination. /// public bool ProfitCenter { get; private init; } /// /// Whether the work center filter is included in this combination. /// public bool WorkCenter { get; private init; } /// /// Whether the component lot filter is included in this combination. /// public bool ComponentLot { get; private init; } /// /// Whether the operator filter is included in this combination. /// public bool Operator { get; private init; } /// /// Whether the item operation MIS filter is included in this combination. /// public bool ItemOperationMis { get; private init; } /// /// Whether the extract MIS filter is included in this combination. /// public bool ExtractMis { get; private init; } /// /// Checks if the given filter flags match this combination. /// /// Whether timespan filter is enabled. /// Whether work order filter is enabled. /// Whether item number filter is enabled. /// Whether profit center filter is enabled. /// Whether work center filter is enabled. /// Whether component lot filter is enabled. /// Whether operator filter is enabled. /// Whether item operation MIS filter is enabled. /// Whether extract MIS filter is enabled. /// True if all 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 } ]; }