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

namespace Fab2ApprovalSystem.Models
{
    /// <summary>
    /// 
    /// </summary>
    public class CCChangeControl
    {
        public int PlanNumber { get; set; }
        public int OwnerID { get; set; }
        public byte CurrentStep { get; set; }
        public int Status { get; set; }

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

        public int ChangeLevel { get; set; }
        public string Notes { get; set; }
        public int IsITAR { get; set; }
        public int IsMedical { get; set; }
        public int IsRadHard { get; set; }
        public int IsAutomotive { get; set; }
        public string Title { get; set; }
        public string PartNumbers { get; set; }
        public string ToolTypes { get; set; }
        public bool RecordLockIndicator { get; set; }
        public int RecordLockedBy { get; set; }
        public bool RecordLocked { get; set; }
        public DateTime RecordLockedDate { get; set; }
        public string ReasonForChange { get; set; }
        public string ChangeDescription { get; set; }
        public DateTime LastUpdateDate { get; set; }
        public int PCR1ID { get; set; }
        public int PCR2ID { get; set; }
        public int PCR3ID {get;set;}
        public string PlanTitle { get; set; }

    }


    /// <summary>
    /// 
    /// </summary>
    public class CCAttachment
    {
        public int ID { get; set; }
        public string FileGUID { get; set; }
        public string FileName { 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 PlanNumber { get; set; }

    }


    /// <summary>
    /// 
    /// </summary>
    public class CCGeneration
    {
        public int GenerationID { get; set; }
        public string Generation { get; set; }        
    }


    /// <summary>
    /// 
    /// </summary>
    public class CCLogistics
    {
        public int LogisticsID { get; set; }
        public string Logistics { get; set; }
    }



    /// <summary>
    /// 
    /// </summary>
    public class CCProcess
    {
        public int ProcessID { get; set; }
        public string Process { get; set; }
    }

    /// <summary>
    /// 
    /// </summary>
    //public class CCToolType
    //{
    //    public int ToolTypeID { get; set; }
    //    public string ToolType { get; set; }
    //}

    public class CCPartNumber
    {
        public string PartNumberID { get; set; }
        public string PartNumber { get; set; }
    }


#region Meeting

    /// <summary>
    /// 
    /// </summary>
    public class CCMeeting
    {
        public int MeetingID { get; set; }
        public List<string> PCRValueIDs { get; set; }
        public string PCRValueIDsDisplay { get
            {
                if(PCRValueIDs.Count < 1)
                {
                    return "";
                }
                return string.Join(",", PCRValueIDs);
            } }
        public int PlanNumber { get; set; }
        public byte CurrentStep { get; set; }
        public string Title {get;set;}
        public int? ChangeLevel
        {
            get;set;
        }
        public string PCRB { get; set; }
         [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
        public DateTime? MeetingDate { get; set; }
        public int Decision { get; set; }
        public string Notes { get; set; }
        public int Status { get; set; }

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

         [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
        public DateTime? CancelledDate { get; set; }
        public bool RecordLockIndicator { get; set; }
        public int RecordLockedBy { get; set; }
        public DateTime RecordLockedDate { get; set; }
        public DateTime LastUpdateDate { get; set; }
        public string RecordLockByName { get; set; }
        public bool PCRBClosed { get; set; }


        public CCMeeting()
        {
            PCRValueIDs = new List<string>();
        }
    }

    public class CCPCRB
    {
        public int PCRBID { get; set; }
        public int PlanNumber { get; set; }
        public string PCRB { get; set; }
        public DateTime Date { get; set; }
        public int Decision { get; set; }
        public string Notes { get; set; }
    }

    /// <summary>
    /// 
    /// </summary>
    public class CCMeetingAttendee
    {
        public int ID { get; set; }
        public int MeetingID { get; set; }
        public string AttendeeName { get; set; }
        public string JobTitle { get; set; }
        public string Location { get; set; }
        public int AttendeeID { get; set; }

    }
    public class CCPCRBAttendee
    {
        public int ID { get; set; }
        public int PCRBID { get; set; }
        public string AttendeeName { get; set; }
        public string JobTitle { get; set; }
        public string Location { get; set; }
        public bool Approved { get; set; }
        public int AttendeeID { get; set; }

    }
    /// <summary>
    /// /
    /// </summary>
    public class CCMeetingAttachment
    {
        public int ID { get; set; }
        public string FileGUID { get; set; }
        public string FileName { get; set; }
        public int UploadedByID { get; set; }
        public string UploadedByName { get; set; }
        public DateTime UploadDateTime { get; set; }
        public string Title { get; set; }        
        public int MeetingID { get; set; }
    }

    /// <summary>
    /// 
    /// </summary>
    public class CCDecisionSummary
    {
        public int ID { get; set; }
        public int MeetingID { get; set; }
        public string DecisionNotes { get; set; }
        public string ECNLinks { get; set; }
        public string LotDispoLinks { get; set; }
    }

    /// <summary>
    /// 
    /// </summary>
    public class CCDecisionSummaryLink
    {
        public string Link { get; set; }
    }


    /// <summary>
    /// 
    /// </summary>
    public class CCMeetingActionItem
    {
        public int ID { get; set; }
        public int MeetingID { get; set; }
        public string ActionItemName { get; set; }
        public string ResponsiblePerson { get; set; }
        public string Gating { get; set; }
        public DateTime? DueDate { get; set; }
        public string ResponsibleID { get; set; }
        

    }
    public class CCPCRBActionItem
    {
        public int ID { get; set; }
        public int PCRBID { get; set; }
        public string ActionItemName { get; set; }
        public string ResponsiblePerson { get; set; }
        public string Gating { get; set; }
        public DateTime? DueDate { get; set; }
        public string ResponsibleID { get; set; }

    }
    public class CCPCRBActionItemAll
    {
        [Key]
        public int ID { get; set; }

        public int MeetingID { get; set; }
        public string ActionItemName { get; set; }
        public string ResponsiblePerson { get; set; }
        public string Gating { get; set; }
        public DateTime? DueDate { get; set; }
        public string PCRB { get; set; }
        public string Updates { get; set; }
        public bool ClosedStatus { get; set; }
        public DateTime? ClosedDate { get; set; }
        public int ClosedBy { get; set; }
        public string FileGUID { get; set; }
        public string FileName { get; set; }
        public int UploadedByID { get; set; }
        public string UploadedByName { get; set; }
        public DateTime UploadDateTime { get; set; }



    }

    /// <summary>
    /// 
    /// </summary>
    public class CCMeetingActionItemAll 
    {
        [Key]
        public int ID { get; set; }

        public int MeetingID { get; set; }
        public string ActionItemName { get; set; }
        public string ResponsiblePerson { get; set; }
        public string Gating { get; set; }
        public DateTime? DueDate { get; set; }
        public string PCRB { get; set; }
        public string Updates { get; set; }       
        public bool ClosedStatus { get; set; }
        public DateTime? ClosedDate { get; set; }
        public int ClosedBy { get; set; }
        public string FileGUID { get; set; }
        public string FileName { get; set; }
        public int UploadedByID { get; set; }
        public string UploadedByName { get; set; }
        public DateTime UploadDateTime { get; set; }



    }

    /// <summary>
    /// 
    /// </summary>
    public class MeetingList
    {
        public int MeetingID { get; set; }
        public string MeetingInfo{ get; set; }
    }

    
    public class MeetingDecisionSummaryList
    {
        public string PCRB { get; set; }
        public DateTime? MeetingDate { get; set; }
        public string DecisionNotes { get; set; }
        public string ECNLinks { get; set; }
        public string LotDispoLinks { get; set; }
    }


    public class UserList
    {
        public int AttendeeID { set; get; }
        public string AttendeeName { get; set; }
    }

    public class ActionItemResponsible
    {
        public string ResponsibleID { set; get; }
        public string ResponsibleName { get; set; }
    }


    public class SiteList
    {
        public string SiteID { set; get; }
        public string SiteName { get; set; }
    }



    public class ChangeControlList
    {        
        public string IssueID { get; set; }
        public string Title { get; set; }
        public string MesaIdTitle { get; set; }
        public string Owner { get; set; }
        public string ChangeLevel { get; set; }
        public DateTime? StartDate { get; set; }
        public DateTime? StatusDate { get; set; }
        public string PCRBStatus { get; set; }
        public string Generations { get; set; }
        public string Logistics { get; set; }
        public string Processes { get; set; }
        public string ToolTypes { get; set; }
        public string ActionItemResponsibility { get; set; }
    }

    public class PCRValue
    {
        public string PCRValueID { set; get; }
        public string PCRValueName { get; set; }
    }

#endregion

}