namespace PSTW_CentralSystem.Areas.IT.Printing
{
    public class ItRequestReportModel
    {
        // Header/meta
        public string DocumentNo { get; set; } = "GITRF_01";
        public string RevNo { get; set; } = "";
        public string DocPageNo { get; set; } = "1 of 1";
        public DateTime EffectiveDate { get; set; } = DateTime.Today;

        // Section A – Requestor snapshot
        public string StaffName { get; set; } = "";
        public string CompanyName { get; set; } = "";
        public string DepartmentName { get; set; } = "";
        public string Designation { get; set; } = "";
        public string Location { get; set; } = "";
        public string EmploymentStatus { get; set; } = "";
        public DateTime? ContractEndDate { get; set; }
        public DateTime RequiredDate { get; set; }
        public string PhoneExt { get; set; } = "";

        // Captured lists (kept for other sections)
        public List<string> Hardware { get; set; } = new();
        public string? Justification { get; set; }
        public List<string> Emails { get; set; } = new();
        public List<string> OsRequirements { get; set; } = new();
        public List<(string Bucket, string Name, string? Other, string? Notes)> Software { get; set; } = new();
        public List<(string Share, bool R, bool W, bool D, bool Remove)> SharedPerms { get; set; } = new();

        // ===== NEW: Hardware purposes (left column) =====
        public bool HwPurposeNewRecruitment { get; set; }
        public bool HwPurposeReplacement { get; set; }
        public bool HwPurposeAdditional { get; set; }

        // ===== NEW: Hardware selections (right column) =====
        public bool HwDesktopAllIn { get; set; }
        public bool HwNotebookAllIn { get; set; }
        public bool HwDesktopOnly { get; set; }
        public bool HwNotebookOnly { get; set; }
        public bool HwNotebookBattery { get; set; }
        public bool HwPowerAdapter { get; set; }
        public bool HwMouse { get; set; }
        public bool HwExternalHdd { get; set; }
        public string? HwOtherText { get; set; }

        // Section B – IT staff
        public string AssetNo { get; set; } = "";
        public string MachineId { get; set; } = "";
        public string IpAddress { get; set; } = "";
        public string WiredMac { get; set; } = "";
        public string WifiMac { get; set; } = "";
        public string DialupAcc { get; set; } = "";
        public string Remarks { get; set; } = "";

        // Acceptance
        public string RequestorName { get; set; } = "";
        public DateTime? RequestorAcceptedAt { get; set; }
        public string ItCompletedBy { get; set; } = "";
        public DateTime? ItAcceptedAt { get; set; }

        // Status
        public int ItRequestId { get; set; }
        public int StatusId { get; set; }
        public string OverallStatus { get; set; } = "";
        public DateTime SubmitDate { get; set; }

        // Approval Flow dates
        public DateTime? HodSubmitDate { get; set; }
        public DateTime? GitHodSubmitDate { get; set; }
        public DateTime? FinHodSubmitDate { get; set; }
        public DateTime? MgmtSubmitDate { get; set; }

        // Approvers
        public string HodApprovedBy { get; set; }
        public string GitHodApprovedBy { get; set; }
        public string FinHodApprovedBy { get; set; }
        public string MgmtApprovedBy { get; set; }
    }
}
