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; }
}