using GB5Shared.ListQuery; namespace SwDAL.DTO.ScriptBranch; // ── Main entity DTO ──────────────────────────────────────────────────────── public class ScriptBranchDTO { public int BranchId { get; set; } // Which product this branch belongs to (SW.MSWDBMODEL) — added 047_ALTER_ // MSWSCRIPTBRANCH_DbModelId.sql; a branch has no meaningful scope without it // (tracker Thread 6 §38 — this is what made "MAIN" collide across products). public int DbModelId { get; set; } public string? DbModelName { get; set; } // read-only JOIN, tracker §41 public string BranchCode { get; set; } = string.Empty; public string BranchName { get; set; } = string.Empty; public byte BranchType { get; set; } public byte BranchStatus { get; set; } public int ParentBranchId { get; set; } = -1; public string? Description { get; set; } // Standard M-table fields public short Version { get; set; } public byte Status { get; set; } = 1; public short SortOrder { get; set; } = 9999; public int CreatedById { get; set; } public DateTime CreatedOn { get; set; } public int ModifiedById { get; set; } public DateTime ModifiedOn { get; set; } public byte SourceType { get; set; } = 5; public int TenantId { get; set; } } // ── Picklist DTO ─────────────────────────────────────────────────────────── public class ScriptBranchPickListDTO { public int BranchId { get; set; } public string BranchCode { get; set; } = string.Empty; public string BranchName { get; set; } = string.Empty; } // ── List infrastructure ──────────────────────────────────────────────────── public sealed class ScriptBranchListCriteria : ICriteria { [CriteriaField("ouid")] public int? OUId { get; set; } // Tracker §41.1's own flagged gap — without this, the "Regenerate reference data" dialog's // branch picker (RegenerateRefDataDialogComponent) lists every branch tenant-wide instead of // scoping to the RefDataSource registry row's own DbModelId. [CriteriaField("dbmodelid")] public int? DbModelId { get; set; } [CriteriaField("branchtype")] public byte? BranchType { get; set; } [CriteriaField("branchstatus")] public byte? BranchStatus { get; set; } [CriteriaField("searchtext")] public string? SearchText { get; set; } [CriteriaField("sortby")] public string? SortBy { get; set; } [CriteriaField("sortdesc")] public bool SortDesc { get; set; } [CriteriaField("pagesize")] public int PageSize { get; set; } = 100; [CriteriaField("pageoffset")] public int PageOffset { get; set; } = 0; } public sealed record ScriptBranchListQuery(ScriptBranchListCriteria Criteria) : IListQuery; public sealed class ScriptBranchListDTO { public int BranchId { get; set; } public int DbModelId { get; set; } public string BranchCode { get; set; } = string.Empty; public string BranchName { get; set; } = string.Empty; public byte BranchType { get; set; } public byte BranchStatus { get; set; } public int TotalCount { get; set; } }