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

namespace Fab2ApprovalSystem.Models;

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

}

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

}

public class CCGeneration {

    public int GenerationID { get; set; }
    public string Generation { get; set; }

}

public class CCLogistics {

    public int LogisticsID { get; set; }
    public string Logistics { get; set; }

}

public class CCProcess {

    public int ProcessID { get; set; }
    public string Process { get; set; }

}

public class CCPartNumber {

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

}

#region Meeting

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

}

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

}

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

}

public class CCDecisionSummaryLink {

    public string Link { get; set; }

}

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

}

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

}

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