namespace TCMSDAL.DTO;
///
/// MTCMSPROJECT — top-level test project container.
/// Linked to a PIE module or a client implementation; multi-tenant via TENANTID.
///
public sealed class TCMSProjectDTO
{
public int ProjectId { get; set; }
public string ProjectCode { get; set; } = string.Empty;
public string ProjectName { get; set; } = string.Empty;
public string? Description { get; set; }
/// Implementation | Internal | RnD
public string ProjectType { get; set; } = "Internal";
/// FK → MTCMSCLIENT (nullable — internal projects have no client)
public int? ClientId { get; set; }
public string? ClientName { get; set; }
/// FK → MTCMSPRODUCT (nullable)
public int? ProductId { get; set; }
public string? ProductName { get; set; }
public string Status { get; set; } = "Active";
public string? LeadConsultant { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? GoLiveDate { get; set; }
public bool IsActive { get; set; } = true;
public int TenantId { get; set; }
public int CreatedBy { get; set; }
public DateTime CreatedDate { get; set; }
public int? ModifiedBy { get; set; }
public DateTime? ModifiedDate { get; set; }
}
/// Lightweight projection for GET list / dropdowns.
public sealed class TCMSProjectListDTO
{
public int ProjectId { get; set; }
public string ProjectCode { get; set; } = string.Empty;
public string ProjectName { get; set; } = string.Empty;
public string ProjectType { get; set; } = string.Empty;
public string? ClientName { get; set; }
public string Status { get; set; } = string.Empty;
public bool IsActive { get; set; }
}
/// Minimal DTO for select-list dropdowns.
public sealed class TCMSProjectSelectDTO
{
public int ProjectId { get; set; }
public string ProjectCode { get; set; } = string.Empty;
public string ProjectName { get; set; } = string.Empty;
}