Initial commit: JDE Scoping Tool migration project

Set up repository with legacy .NET Framework 4.8 source (OLD/),
new .NET 10 Blazor solution (NEW/), OpenSpec specifications,
documentation, and project configuration.
This commit is contained in:
Joseph Doherty
2026-01-02 07:43:29 -05:00
commit 26ff8d9b4f
1761 changed files with 596509 additions and 0 deletions
@@ -0,0 +1,142 @@
namespace JdeScoping.ExcelIO.Models.Reporting;
/// <summary>
/// Reporting search data model for Excel export.
/// </summary>
public class SearchModel
{
/// <summary>
/// PK ID of search.
/// </summary>
public int Id { get; set; }
/// <summary>
/// User name of user that created search.
/// </summary>
public string UserName { get; set; } = string.Empty;
/// <summary>
/// User-friendly name for search.
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// Timestamp search was submitted.
/// </summary>
public DateTime? SubmitDt { get; set; }
/// <summary>
/// Timestamp search was started.
/// </summary>
public DateTime? StartDt { get; set; }
/// <summary>
/// Timestamp search was completed.
/// </summary>
public DateTime? EndDt { get; set; }
/// <summary>
/// Minimum timestamp to include.
/// </summary>
public DateTime? MinimumDt { get; set; }
/// <summary>
/// Maximum timestamp to include.
/// </summary>
public DateTime? MaximumDt { get; set; }
/// <summary>
/// Whether or not timespan filter is enabled.
/// </summary>
public bool TimespanFilterEnabled => MinimumDt.HasValue || MaximumDt.HasValue;
/// <summary>
/// Collection of work order numbers to include.
/// </summary>
public List<WorkOrderFilterEntry> WorkOrderFilter { get; set; } = [];
/// <summary>
/// Whether or not work order filter is enabled.
/// </summary>
public bool WorkOrderFilterEnabled => WorkOrderFilter.Count > 0;
/// <summary>
/// Collection of item numbers to include.
/// </summary>
public List<ItemNumberFilterEntry> ItemNumberFilter { get; set; } = [];
/// <summary>
/// Whether or not item number filter is enabled.
/// </summary>
public bool ItemNumberFilterEnabled => ItemNumberFilter.Count > 0;
/// <summary>
/// Collection of included profit centers.
/// </summary>
public List<ProfitCenterFilterEntry> ProfitCenterFilter { get; set; } = [];
/// <summary>
/// Whether or not profit center filter is enabled.
/// </summary>
public bool ProfitCenterFilterEnabled => ProfitCenterFilter.Count > 0;
/// <summary>
/// Collection of included work centers.
/// </summary>
public List<WorkCenterFilterEntry> WorkCenterFilter { get; set; } = [];
/// <summary>
/// Whether or not work center filter is enabled.
/// </summary>
public bool WorkCenterFilterEnabled => WorkCenterFilter.Count > 0;
/// <summary>
/// Collection of included operator IDs.
/// </summary>
public List<OperatorFilterEntry> OperatorFilter { get; set; } = [];
/// <summary>
/// Whether or not operator filter is enabled.
/// </summary>
public bool OperatorFilterEnabled => OperatorFilter.Count > 0;
/// <summary>
/// Collection of included upper level lot numbers.
/// </summary>
public List<ComponentLotFilterEntry> ComponentLotFilter { get; set; } = [];
/// <summary>
/// Whether or not component lot filter is enabled.
/// </summary>
public bool ComponentLotFilterEnabled => ComponentLotFilter.Count > 0;
/// <summary>
/// List of part/operation combinations for MIS filtering.
/// </summary>
public List<ItemOperationMisFilterEntry> ItemOperationMisFilter { get; set; } = [];
/// <summary>
/// Whether or not item/operation/MIS filter is enabled.
/// </summary>
public bool ItemOperationMisFilterEnabled => ItemOperationMisFilter.Count > 0;
/// <summary>
/// Whether or not to extract MIS data.
/// </summary>
public bool ExtractMisData { get; set; }
/// <summary>
/// Work order search results.
/// </summary>
public List<SearchResult> Results { get; set; } = [];
/// <summary>
/// MIS results.
/// </summary>
public List<MisSearchResult>? MisResults { get; set; }
/// <summary>
/// MIS no match found results.
/// </summary>
public List<MisNonMatchSearchResult>? MisNonMatchResults { get; set; }
}