using Fab2ApprovalSystem.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace Fab2ApprovalSystem.ViewModels
{
    public class ECNPdf
    {
        public string Title { get; set; }
        public int ECNNumber { get; set; }

        [DataType(DataType.Date)]
        public DateTime IssueDate { get; set; }


        [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
        public DateTime? SubmitedDate { get; set; }

        [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
        public DateTime? CloseDate { get; set; }

        public int OriginatorID { get; set; }
        public string OriginatorName { get; set; }
        // important!!make sure the id of the control matches the name of the field in the model  it is being binded to, 
        // in order to get the selected items from the control
        

        //public List<string> AffectedModules { get; set; }
        public List<ECNApprovalLog> Approvalog { get; set; }
        public List<string> Attachments { get; set; }

        public string AffectedModules { get; set; }
        public string AffectedDepartments { get; set; }
        //public string Attachments { get; set; }

        public string AffectedAreas { get; set; }
        public string AffectedTechnologies { get; set; }
        public string TrainingBy { get; set; }
        public string AcknowledgementBy { get; set; }


        public bool IsECN { get; set; }
        public bool IsTECN { get; set; }
        public bool IsEmergencyTECN { get; set; }

        [DataType(DataType.Date)]
        //[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
        public DateTime? ExpirationDate { get; set; }

        [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
        public DateTime? ExtensionDate { get; set; }

        [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
        public DateTime? CancellationDate { get; set; }

        public bool AcknowledgementRequired { get; set; }
        public bool TrainingRequired { get; set; }
        public int? AreaID { get; set; }
        public int? TechnologyID { get; set; }
       
        public bool PCRBRequired { get; set; }
        public string PCRBNumber { get; set; }
        public bool TestProgramChangeRequired { get; set; }
        public bool MetrologyChangeRequired { get; set; }
        public bool SPCChangeRequired { get; set; }
        public bool NewPartFlowRequired { get; set; }
        public bool SPNChangeRequired { get; set; }
        public string ImplementationDetails { get; set; }
        public int ImpactOnEnvironment { get; set; }
        public string ImpactOnEnvironmentDescription { get; set; }
        public int ImpactOnCapacity { get; set; }
        public string ImpactOnCapacityDescription { get; set; }
        public bool IsMA { get; set; }
        public bool IsRH { get; set; }
        public bool IsAU { get; set; }
        public bool IsIndustrial { get; set; }
        public int MaterialConsumptionChangeRequired { get; set; }
        public string MaterialConsumptionChangeDescription { get; set; }
        public string ReasonForChange { get; set; }
        public string DescriptionOfChange { get; set; }
        public bool NotAFlowChange { get; set; }
        public bool AttachECN_TECNToLots { get; set; }
        public bool SPNFlowChangeAtSingleStep { get; set; }
        public bool SPNFlowChangeAtMultipleSteps { get; set; }
        public byte CurrentStep { get; set; }
        public string Area { get; set; }
        public string Technology { get; set; }
        public DateTime? CancellationApprovalDate { get; set; }
        public int? ConvertedToNumber { get; set; }
        public int? ConvertedFromNumber { get; set; }
        public int WorkFlowNumber { get; set; }

        public bool FIChangeRequired { get; set; }
        public string NumberOfLotsAffected { get; set; }
        public string RecipeChange { get; set; }
        public string AffectedProductFamilies { get; set; }

        public bool IsDocEC { get; set; }

        public ECNPdf()
        {
           
            Approvalog = new List<ECNApprovalLog>();
            Attachments = new List<string>();
        }

    }


    /// <summary>
    /// 
    /// </summary>
    public class ECNApprovalLog
    {
        public string FullName { get; set; }
        public string Operation { get; set; } 
        public string SubRole { get; set; }
        public string OperationTime { get; set; }

    }

    /// <summary>
    /// 
    /// </summary>
    public class WorkRequestPdf
    {
        public int ID{ get; set; }
        public int SWRNumber{ get; set; }
        public bool RecordLockIndicator{ get; set; }
        public int RecordLockedBy { get; set; }
        public string RecordLockByName { get; set; }
        public byte CurrentStep { get; set; }
        public int Revision{ get; set; }
        public bool IsCurrentRevision { get; set; }
        public int OriginatorID{ get; set; }
        public DateTime? OriginatedDate { get; set; }
        public DateTime? SubmitedDate { get; set; }
        public DateTime? CloseDate { get; set; }
        public int Status{ get; set; }
        public bool IsITAR{ get; set; }
        public string Title{ get; set; }
        public char? LotType{ get; set; }
        public string PCRBNumber{ get; set; }
        public int? EngLotStartRequired{ get; set; }
        public int? LotTypeConversion{ get; set; }
        public int? QualLot{ get; set; }
        public string PurposeOfRequest{ get; set; }
        public DateTime? PlannedLotStartDate{ get; set; }
        public DateTime? PlannedScheduledCloseDate{ get; set; }
        public string ChargeDepartment{ get; set; }
        public string AllocationToUse{ get; set; }
        public int? PredictedCyleTime{ get; set; }
        public string ChargesForRawWafers{ get; set; }
        public string DeptChargedForRawWafers{ get; set; }
        public string DeptOwnerForRawWafers{ get; set; }
        public string FabCost{ get; set; }
        public string DeptChargedForFabCost{ get; set; }
        public string SignOn{ get; set; }
        public string Verb1{ get; set; }
        public DateTime? EstimatedBinCLoseDate { get; set; }
        public int? StartQty{ get; set; }
        public int? TotalQty { get; set; }
        public string Verb2{ get; set; }
        public string WIPArea{ get; set; }
        public DateTime? LotStartDate{ get; set; }
        public string LotNumber { get; set; }
        public string WIPPartNumber{ get; set; }
        public string PartDescription { get; set; }
        public string DefaultEPISiliconPartNumber { get; set; }
        public string ProcessFlow{ get; set; }
        public string EmployeeID{ get; set; }
        public string VerbComment{ get; set; }
        public int? RecordSiliconLotInSPNTapeTagTotrav { get;set;}
        public string SiliconLotNoCassette1 { get; set; }
        public bool SiliconOnHand { get; set; }
        public bool ReticleOnHand { get; set; }
        public bool SPNTransferOnHand { get; set; }
        public bool ProbeCardOnHand { get; set; }
        public bool ProbeRecipeOnHand { get; set; }
        public bool ProcessChangeDetailsOnHand { get; set; }

        public string LotStartCheckListComments { get; set; }

        public List<LTHoldStep> LTHoldStep { get; set; }
        public string AffectedDepartments { get; set; }
        public string AffectedModules { get; set; }
        public string OriginatorName { get; set; }
        public string RevisionComments { get; set; }
        public List<LTMaterial> LTMaterial { get; set; }

        public WorkRequestPdf()
        {
            LTHoldStep = new List<LTHoldStep>();
            LTMaterial = new List<LTMaterial>();
        }
    }

    /// <summary>
    /// 
    /// </summary>
    public class LotTravelerPdf
    {

        public int SWRNumber { get; set; }
        public string LotNumber { get; set; }
        public string Title { get; set; } //
        public string Status { get; set; } //        
        public string Originator { get; set; } //
        public string WIPPartNumber { get; set; }
        public string PartDescription { get; set; }
        public string BaseFlow { set; get; }
        public bool IsITAR { set; get; }
        public DateTime? LastUpdate { get; set; }
        public string LastUpdatedBy { get; set; }
        public string PurposeOfRequest { get; set; }
        public int LotTravCurrentRevision { get; set; }
        public List<LTLotTravelerHoldSteps> Tasklist { get; set; }

        public LotTravelerPdf()
        {
            Tasklist = new List<LTLotTravelerHoldSteps>();
        }

    }

   
}