using System;
using System.Collections.Generic;

namespace Fab2ApprovalSystem.Models;

public class AuditList {

    public string AuditNo { get; set; }
    public string AuditTitle { get; set; }
    public string AuditType { get; set; }
    public string Auditors { get; set; }
    public string PendingCAFindingsAIOwners { get; set; }
    public string PendingCAOwners { get; set; }
    public DateTime? AuditDate { get; set; }
    public string FindingCategories { get; set; }
    public string AuditedAreas { get; set; }
    public string CADisp { get; set; }
    public string CorrectiveActions { get; set; }
    public string AuditScore { get; set; }
    public string AuditStatus { get; set; }

}

public class Audit {

    public int AuditNo { set; get; }
    public int OriginatorID { get; set; }
    public string OriginatorName { get; set; }
    public string AuditTitle { get; set; }
    public int AuditScore { get; set; }
    public DateTime? AuditDate { get; set; }
    public string AuditFindingCategories { get; set; }
    public int AuditStatus { get; set; }
    public string NoOfMajorNonConformities { get; set; }
    public string NoOfMinorNonConformities { get; set; }
    public string NoOf5SFindings { get; set; }
    public string NoOfOFIFindings { get; set; }
    public string Auditees { get; set; }
    public List<int> AuditorIDs { get; set; }
    public List<int> AuditTypeIDs { get; set; }
    public List<int> AuditedAreaIDs { get; set; }
    public List<int> AuditedStandardIDs { get; set; }
    public bool RecordLockIndicator { get; set; }
    public int RecordLockedBy { get; set; }
    public bool RecordLocked { get; set; }
    public DateTime RecordLockedDate { get; set; }
    public DateTime LastUpdateDate { get; set; }
    public CAFindings CAFindings { get; set; }
    public Audit() {
        AuditorIDs = new List<int>();
        AuditTypeIDs = new List<int>();
        AuditedAreaIDs = new List<int>();
        CAFindings = new CAFindings();
    }
}

public class Auditees {
    private string UserName { get; set; }

}

public class AuditType {

    public int AuditTypeID { get; set; }
    public string AuditTypeName { get; set; }

}

public class Auditor {

    public int AuditorID { get; set; }
    public string AuditorName { get; set; }

}

/// <summary>
/// 
/// </summary>

public class AuditedArea {

    public int AuditedAreaID { get; set; }
    public string AuditedAreaName { get; set; }

}

public class AuditFindings {

    public int ID { get; set; }
    public int AuditNo { get; set; }
    public string Findings { get; set; }
    public string ViolatedClause { get; set; }
    public string FindingType { get; set; }
    public string AuditFindingCategoryID { get; set; }
    public string FindingCategories { get; set; }
    public int CANo { get; set; }
    public string CANoDisp { get; set; }
    public string CAStatus { get; set; }
    public int CAOwnerID { get; set; }
    public string CAOwner { get; set; }
    public DateTime AssignedDate { get; set; }
    public string Title { get; set; }

}

public class AuditFindingCategory {

    public int AuditFindingCategoryID { get; set; }
    public string AuditFindingCategoryName { get; set; }

}

public class AuditReportAttachment {

    public int ID { get; set; }
    public string FileGUID { get; set; }
    public string FileName { get; set; }
    public int UploadedByID { get; set; }
    public int? CAFindingsID { get; set; }
    public string UploadedByName { get; set; }
    public DateTime? UploadDateTime { get; set; }
    public string Title { get; set; }
    public string RequirementsNotes { get; set; }
    public string Comments { get; set; }
    public int AuditNo { get; set; }

}

public class CorrectiveAction {

    public int CANo { get; set; }
    public string CANoDisp { get; set; }
    public int AuditNo { get; set; }
    public int RequestorID { get; set; }
    public string RequestorName { get; set; }
    public string CATitle { get; set; }
    public bool D0Completed { get; set; }
    public DateTime? D0CompleteDate { get; set; }
    public bool D0Approved { get; set; }
    public DateTime? D0ApprovedDate { get; set; }
    public bool TriggerApproval { get; set; }
    public bool TriggerSectionApproval { get; set; }
    public string SectionApproval { get; set; }
    public DateTime? IssueDate { get; set; }
    public string CAType { get; set; }
    public bool IsCACompleted { get; set; }
    public DateTime CACompletedDate { get; set; }
    public int ApprovalStatus { get; set; }
    public int WorkFlowNumber { get; set; }
    public byte CurrentStep { get; set; }
    public int D1AssigneeID { get; set; }
    public int CurrentD1AssigneeID { get; set; }
    public string D1AssigneeName { get; set; }
    public int CASourceID { get; set; }
    public string CASource { get; set; }
    public int ModuleID { get; set; }
    public int Status { get; set; }
    public string StatusName { get; set; }
    public string Stage { get; set; }
    public int QAID { get; set; }
    public string PendingApprovers { get; set; }
    public string PendingAIOwners { get; set; }
    public string Tools { get; set; }
    public string RelatedMRB { get; set; }
    public int RelatedAudit { get; set; }
    public string D2ProblemDescription { get; set; }
    public List<int> RiskAssessmentAreaIDs { get; set; }
    public List<int> ModuleIDs { get; set; }
    public string D3RiskAssessmentNotes { get; set; }
    public bool D3Completed { get; set; }
    public DateTime? D3CompleteDate { get; set; }
    public bool D3Approved { get; set; }
    public DateTime? D3ApprovedDate { get; set; }
    public DateTime? D3DueDate { get; set; }
    public string D4RootCause1 { get; set; }
    public string D4RootCause2 { get; set; }
    public string D4RootCause3 { get; set; }
    public string D4RootCause4 { get; set; }
    public DateTime? D4CompleteDate { get; set; }
    public bool D4Completed { get; set; }
    public bool D4Approved { get; set; }
    public DateTime? D4ApprovedDate { get; set; }
    public DateTime? D5CompleteDate { get; set; }
    public bool D5Completed { get; set; }
    public DateTime? D6ValidatedDate { get; set; }
    public bool D6Validated { get; set; }
    public DateTime? D7CompleteDate { get; set; }
    public bool D7Completed { get; set; }
    public bool D5Approved { get; set; }
    public DateTime? D5ApprovedDate { get; set; }
    public DateTime? D5D7DueDate { get; set; }
    public DateTime? D8DueDate { get; set; }
    public DateTime? D8CompletedDate { get; set; }
    public bool D8Completed { get; set; }
    public DateTime? D8ApprovedDate { get; set; }
    public bool D8Approved { get; set; }
    public string D8TeamRecognition { get; set; }
    public string D8LessonsLearned { get; set; }
    public string TeamMembers { get; set; }
    public DateTime? ApprovedDate { get; set; }
    public bool RecordLockIndicator { get; set; }
    public int RecordLockedBy { get; set; }
    public string RecordLockByName { get; set; }
    public bool RecordLocked { get; set; }
    public DateTime RecordLockedDate { get; set; }
    public DateTime LastUpdateDate { get; set; }
    public List<int> TeamMemberIDs { get; set; }
    public D5D6CorrectivetAction D5D6CorrectivetAction { get; set; }
    public D7PreventiveAction D7PreventiveAction { get; set; }
    public string D0Comments { get; set; }
    public int TeamCaptainID { get; set; }
    public string TeamCaptainName { get; set; }
    public int CASponsorID { get; set; }
    public string CASponsorName { get; set; }
    public string CustomerName { get; set; }
    public string CustomerPartNo { get; set; }
    public string IFXPartNo { get; set; }
    public int PartQty { get; set; }
    public string InvoiceNo { get; set; }
    public string PurchaseOrderNo { get; set; }
    public string SalesOrderNo { get; set; }
    public double DollarImpact { get; set; }
    public string BackgroundInfo { get; set; }
    public string Analysis { get; set; }
    public string VisualVerification { get; set; }
    public string InterimContainmentAction { get; set; }
    public string ICAVerificationResults { get; set; }
    public string ICAValidationActivities { get; set; }
    public string RootCauseVerification { get; set; }
    public string EscapePoint { get; set; }
    public DateTime? NextDueDate { get; set; }
    public DateTime? FollowUpDate { get; set; }
    public bool CASubmitted { get; set; }
    public DateTime? ClosedDate { get; set; }
    public CorrectiveAction() {
        TeamMemberIDs = new List<int>();
        ModuleIDs = new List<int>();
        RiskAssessmentAreaIDs = new List<int>();
        D5D6CorrectivetAction = new D5D6CorrectivetAction();
        D7PreventiveAction = new D7PreventiveAction();
    }

}

public class CASource {

    public int CASourceID { get; set; }
    public string CASourceName { get; set; }

}

public class CAUserList {

    public int UserID { get; set; }
    public string UserName { get; set; }

}

public class CAModule {

    public int ModuleID { get; set; }
    public string ModuleName { get; set; }

}

public class CA_Attachment {

    public int ID { get; set; }
    public string FileGUID { get; set; }
    public string FileName { get; set; }
    public string FileExtension { get; set; }
    public string Section { get; set; }
    public int UploadedByID { get; set; }
    public string UploadedByName { get; set; }
    public DateTime? UploadDateTime { get; set; }
    public string Title { get; set; }
    public string RequirementsNotes { get; set; }
    public string Comments { get; set; }
    public int? CANo { get; set; }
    public int? D5D6CAID { get; set; }
    public int? D7PAID { get; set; }
    public int? CAFindingsID { get; set; }

}

public class D3ContainmentAction {

    public int ID { get; set; }
    public int CANo { get; set; }
    public string Section { get; set; }
    public string ContainmentAction { get; set; }
    public string Result { get; set; }
    public string ECNLinks { get; set; }
    public int ResponsibilityOwnerID { get; set; }
    public int CurrentResponsibilityOwnerID { get; set; }
    public string ResponsibilityOwnerName { get; set; }
    public DateTime? ECD { get; set; }
    public DateTime? ImplementedDate { get; set; }
    public DateTime AssignedDate { get; set; }

}

public class RiskAssessmentArea {

    public int RiskAssessmentAreaID { get; set; }
    public string RiskAssessmentAreaName { get; set; }

}

public class D5D6CorrectivetAction {

    public int ID { get; set; }
    public int CANo { get; set; }
    public string CorrectiveAction { get; set; }
    public string CARequired { get; set; }
    public string Result { get; set; }
    public string ECNLinks { get; set; }
    public string AttachmentLinks { get; set; }
    public int ResponsibilityOwnerID { get; set; }
    public int CurrentResponsibilityOwnerID { get; set; }
    public string ResponsibilityOwnerName { get; set; }
    public DateTime? ECD { get; set; }
    public DateTime? ImplementedDate { get; set; }
    public bool IsImplemented { get; set; }
    public string ImprovementID { get; set; }
    public string Improvement { get; set; }
    public CA_Attachment CA_Attachment { get; set; }
    public DateTime AssignedDate { get; set; }
    public bool Approved { get; set; }
    public D5D6CorrectivetAction() =>
        CA_Attachment = new CA_Attachment();
    public string ActionType { get; set; }

}

public class D5D6Improvement {

    public int D5D6ImprovementID { get; set; }
    public string D5D6ImprovementName { get; set; }

}

public class D7PreventiveAction {

    public int ID { get; set; }
    public int CANo { get; set; }
    public string PreventiveAction { get; set; }
    public string Result { get; set; }
    public string ECNLinks { get; set; }
    public string AttachmentLinks { get; set; }
    public int ResponsibilityOwnerID { get; set; }
    public int CurrentResponsibilityOwnerID { get; set; }
    public string ResponsibilityOwnerName { get; set; }
    public DateTime? ECD { get; set; }
    public DateTime? ImplementedDate { get; set; }
    public CA_Attachment CA_Attachment { get; set; }
    public DateTime AssignedDate { get; set; }
    public D7PreventiveAction() =>
        CA_Attachment = new CA_Attachment();

}

public class CAFindings {

    public int ID { get; set; }
    public int AuditNo { get; set; }
    public string CAFinding { get; set; }
    public string CorrectiveAction { get; set; }
    public string Result { get; set; }
    public string AttachmentLinks { get; set; }
    public int? CurrentResponsibilityOwnerID { get; set; }
    public int? ResponsibilityOwnerID { get; set; }
    public string ResponsibilityOwnerName { get; set; }
    public DateTime? ECD { get; set; }
    public DateTime? ImplementedDate { get; set; }
    public AuditReportAttachment Audit_Attachment { get; set; }
    public DateTime AssignedDate { get; set; }
    public CAFindings() =>
        Audit_Attachment = new AuditReportAttachment();

}

public class CASectionApproval {

    public string DSection { get; set; }
    public string Fullname { get; set; }
    public string ApprovalStatus { get; set; }
    public DateTime? DateAssigned { get; set; }
    public DateTime? DateCompleted { get; set; }
    public string Comments { get; set; }

}

public class CANoList {

    public int CANo { get; set; }
    public string CANoDisp { get; set; }

}

public class CAD3D5D7Due {

    public int CANo { get; set; }
    public DateTime DueDate { get; set; }
    public string ItemDue { get; set; }
    public string ExpiryType { get; set; }

}