using GB5Shared.ListQuery; using SwDAL.DTO.SyncGroup; namespace SwDAL.DTO.ObjectGroup; // ── Main entity DTO ──────────────────────────────────────────────────────── public class ObjectGroupDTO { public int ObjectGroupId { get; set; } public string GroupCode { get; set; } = string.Empty; public string GroupName { get; set; } = string.Empty; 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; } public List ObjectDetails { get; set; } = new(); } // ── Object reference (detail) DTO ───────────────────────────────────────── public class ObjectGroupDetailDTO { public int ObjectReferenceId { get; set; } // IDENTITY surrogate (020_ALTER_MSWOBJECTGROUPDETAIL.sql) public int ObjectGroupId { get; set; } public string ObjectGroupDescription { get; set; } public string ObjectGroupName { get; set; } public byte ObjectType { get; set; } public int TenantId { get; set; } } // ── Picklist DTO ─────────────────────────────────────────────────────────── public class ObjectGroupPickListDTO { public int ObjectGroupId { get; set; } public string GroupCode { get; set; } = string.Empty; public string GroupName { get; set; } = string.Empty; } // ── List infrastructure ──────────────────────────────────────────────────── public sealed class ObjectGroupListCriteria : ICriteria { [CriteriaField("ouid")] public int? OUId { 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 ObjectGroupListQuery(ObjectGroupListCriteria Criteria) : IListQuery; public sealed class ObjectGroupListDTO { public int ObjectGroupId { get; set; } public string GroupCode { get; set; } = string.Empty; public string GroupName { get; set; } = string.Empty; public int TotalCount { get; set; } }