using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

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 AuditTypeID { get; set; }
        public int AuditScore { get; set; }
        public DateTime? AuditDate { get; set; }
        //public int Auditors { get; set; } // List of Auditors
        public string AuditFindingCategories { get; set; }
        public int AuditStatus { get; set; }
        //public int AuditedAreaID { get; set; }
        public string NoOfMajorNonConformities { get; set; }
        public string NoOfMinorNonConformities { 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
    {
        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; }
    }

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

    }

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

    }


  
    /// <summary>
    /// 
    /// </summary>
    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 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? 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 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? FollowUpDate { 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();
           
        }
         
    }

    /// <summary>
    /// 
    /// </summary>
    public class CASource
    {
        public int CASourceID { get; set; }
        public string CASourceName { get; set; }
    }


    /// <summary>
    /// 
    /// </summary>
    public class CAUserList
    {
        public int UserID { get; set; }
        public string UserName { get; set; }
    }


    /// <summary>
    /// 
    /// </summary>
    public class CAModule
    {
        public int ModuleID { get; set; }
        public string ModuleName { get; set; }
    }


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


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


    }


    /// <summary>
    /// 
    /// </summary>
    public class RiskAssessmentArea
    {
        public int RiskAssessmentAreaID { get; set; }
        public string RiskAssessmentAreaName { get; set; }
    }


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

    }


    /// <summary>
    /// 
    /// </summary>
    public class D5D6Improvement
    {
        public int D5D6ImprovementID { get; set; }
        public string D5D6ImprovementName { get; set; }
    }

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

    /// <summary>
    /// 
    /// </summary>
    public class CANoList
    {
        public int CANo { get; set; }
        public string CANoDisp { get; set; }
    }

}