using GB5Shared.ListQuery; namespace PIEDAL.DTO.ConfigItem; // ── MPIECONFIGITEM — save / edit ────────────────────────────────────────────── public class PIEConfigItemDTO { public Guid ConfigItemId { get; set; } public Guid ModuleId { get; set; } /// Display-only — joined on GET public string? ModuleName { get; set; } public string ItemCode { get; set; } = string.Empty; public string ItemName { get; set; } = string.Empty; /// BizTransaction | Workflow | Role | DocumentFormat | MailScheduler | Infrastructure public string ItemCategory { get; set; } = string.Empty; public string? Description { get; set; } /// ISMANDATORY: 0=No, 1=Yes public short IsMandatory { get; set; } = 1; public string? DefaultValue { get; set; } public decimal EstimatedHours { get; set; } public int DisplayOrder { get; set; } /// STATUS: 1=Active, 0=Inactive [GB5Shared.EntityHandler.WorkflowStatusField] public short IsActive { get; set; } = 1; public string? CmsContentRef { get; set; } public DateTime? CreatedAt { get; set; } public int CreatedBy { get; set; } public DateTime? UpdatedAt { get; set; } public int UpdatedBy { get; set; } public int TenantId { get; set; } } // ── MPIECONFIGITEM — list ───────────────────────────────────────────────────── public sealed class PIEConfigItemListDTO { public Guid ConfigItemId { get; set; } public Guid ModuleId { get; set; } public string ItemCode { get; set; } = string.Empty; public string ItemName { get; set; } = string.Empty; public string ItemCategory { get; set; } = string.Empty; public short IsMandatory { get; set; } public short IsActive { get; set; } public decimal EstimatedHours { get; set; } public int TotalCount { get; set; } } public sealed class PIEConfigItemListCriteria : ICriteria { [CriteriaField("moduleid")] public Guid? ModuleId { get; set; } [CriteriaField("category")] public string? ItemCategory { get; set; } [CriteriaField("ismandatory")] public short? IsMandatory { get; set; } [CriteriaField("isactive")] public short? IsActive { get; set; } [CriteriaField("searchtext")] public string? SearchText { get; set; } [CriteriaField("ouid")] public int? OUId { 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 PIEConfigItemListQuery(PIEConfigItemListCriteria Criteria) : IListQuery; // ── MPIETRAININGTOPIC — save / edit ─────────────────────────────────────────── public class PIETrainingTopicDTO { public Guid TopicId { get; set; } public Guid ModuleId { get; set; } public string? ModuleName { get; set; } public string TopicCode { get; set; } = string.Empty; public string TopicName { get; set; } = string.Empty; public string? MenuPath { get; set; } /// Master | Transaction | Report | Process public string? TopicCategory { get; set; } public int EstimatedMinutes { get; set; } = 60; public int SequenceOrder { get; set; } /// ISMANDATORY: 0=No, 1=Yes public short IsMandatory { get; set; } = 1; /// STATUS: 1=Active, 0=Inactive public short IsActive { get; set; } = 1; public string? CmsContentRef { get; set; } public DateTime? CreatedAt { get; set; } public int CreatedBy { get; set; } public DateTime? UpdatedAt { get; set; } public int UpdatedBy { get; set; } public int TenantId { get; set; } } public sealed class PIETrainingTopicListDTO { public Guid TopicId { get; set; } public Guid ModuleId { get; set; } public string TopicCode { get; set; } = string.Empty; public string TopicName { get; set; } = string.Empty; public string? TopicCategory { get; set; } public int EstimatedMinutes { get; set; } public short IsMandatory { get; set; } public short IsActive { get; set; } public int TotalCount { get; set; } } public sealed class PIETrainingTopicListCriteria : ICriteria { [CriteriaField("moduleid")] public Guid? ModuleId { get; set; } [CriteriaField("category")] public string? TopicCategory { get; set; } [CriteriaField("ismandatory")] public short? IsMandatory { get; set; } [CriteriaField("isactive")] public short? IsActive { get; set; } [CriteriaField("searchtext")] public string? SearchText { get; set; } [CriteriaField("ouid")] public int? OUId { 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 PIETrainingTopicListQuery(PIETrainingTopicListCriteria Criteria) : IListQuery; // ── MPIEUATSCENARIO — save / edit ───────────────────────────────────────────── public class PIEUATScenarioDTO { public Guid ScenarioId { get; set; } public Guid ModuleId { get; set; } public string? ModuleName { get; set; } public string ScenarioCode { get; set; } = string.Empty; public string ScenarioTitle { get; set; } = string.Empty; public string? TransactionType { get; set; } public string? Preconditions { get; set; } /// TEXT [{stepNo, instruction, plainLanguageHint}] — serialized as JSON string public string Steps { get; set; } = "[]"; public string ExpectedResult { get; set; } = string.Empty; public int EstimatedMinutes { get; set; } = 30; /// 1=Simple 2=Medium 3=Complex public short Complexity { get; set; } = 2; /// ISMANDATORY: 0=No, 1=Yes public short IsMandatory { get; set; } = 1; /// STATUS: 1=Active, 0=Inactive public short IsActive { get; set; } = 1; public string? CmsContentRef { get; set; } public DateTime? CreatedAt { get; set; } public int CreatedBy { get; set; } public DateTime? UpdatedAt { get; set; } public int UpdatedBy { get; set; } public int TenantId { get; set; } } public sealed class PIEUATScenarioListDTO { public Guid ScenarioId { get; set; } public Guid ModuleId { get; set; } public string ScenarioCode { get; set; } = string.Empty; public string ScenarioTitle { get; set; } = string.Empty; public short Complexity { get; set; } public int EstimatedMinutes { get; set; } public short IsMandatory { get; set; } public short IsActive { get; set; } public int TotalCount { get; set; } } public sealed class PIEUATScenarioListCriteria : ICriteria { [CriteriaField("moduleid")] public Guid? ModuleId { get; set; } [CriteriaField("complexity")] public short? Complexity { get; set; } [CriteriaField("ismandatory")] public short? IsMandatory { get; set; } [CriteriaField("isactive")] public short? IsActive { get; set; } [CriteriaField("searchtext")] public string? SearchText { get; set; } [CriteriaField("ouid")] public int? OUId { 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 PIEUATScenarioListQuery(PIEUATScenarioListCriteria Criteria) : IListQuery; // ── MPIEMIGRATIONOBJECT — save / edit ───────────────────────────────────────── public class PIEMigrationObjectDTO { public Guid MigrationObjectId { get; set; } public Guid ModuleId { get; set; } public string? ModuleName { get; set; } public string ObjectCode { get; set; } = string.Empty; public string ObjectName { get; set; } = string.Empty; /// Master | Transaction | OpeningBalance | Configuration public string DataCategory { get; set; } = string.Empty; public string? Description { get; set; } public string? TemplateRef { get; set; } /// ISMANDATORY: 0=No, 1=Yes public short IsMandatory { get; set; } = 1; public int SequenceOrder { get; set; } /// STATUS: 1=Active, 0=Inactive public short IsActive { get; set; } = 1; public DateTime? CreatedAt { get; set; } public int CreatedBy { get; set; } public DateTime? UpdatedAt { get; set; } public int UpdatedBy { get; set; } public int TenantId { get; set; } } public sealed class PIEMigrationObjectListDTO { public Guid MigrationObjectId { get; set; } public Guid ModuleId { get; set; } public string ObjectCode { get; set; } = string.Empty; public string ObjectName { get; set; } = string.Empty; public string DataCategory { get; set; } = string.Empty; public short IsMandatory { get; set; } public short IsActive { get; set; } public int TotalCount { get; set; } } public sealed class PIEMigrationObjectListCriteria : ICriteria { [CriteriaField("moduleid")] public Guid? ModuleId { get; set; } [CriteriaField("category")] public string? DataCategory { get; set; } [CriteriaField("ismandatory")] public short? IsMandatory { get; set; } [CriteriaField("isactive")] public short? IsActive { get; set; } [CriteriaField("searchtext")] public string? SearchText { get; set; } [CriteriaField("ouid")] public int? OUId { 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 PIEMigrationObjectListQuery(PIEMigrationObjectListCriteria Criteria) : IListQuery; // ── UAT step helper DTO (for TEXT/JSON serialization) ───────────────────────── public sealed class PIEUATStepDTO { public int StepNo { get; set; } public string Instruction { get; set; } = string.Empty; public string? PlainLanguageHint { get; set; } }