using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Newtonsoft.Json;

namespace FMSAdmin.Entities {
    public partial class CmFile {
        public CmFile() {
            CmAnnouncement = new HashSet<CmAnnouncement>();
            CmGuideline = new HashSet<CmGuideline>();
            FmsAccidentCmFile1 = new HashSet<FmsAccident>();
            FmsAccidentCmFile2 = new HashSet<FmsAccident>();
            FmsAccidentCmFile3 = new HashSet<FmsAccident>();
            FmsAccidentCmFile4 = new HashSet<FmsAccident>();
            FmsConstructionCmFile = new HashSet<FmsConstruction>();
            FmsConstructionCmFile1 = new HashSet<FmsConstruction>();
            FmsConstructionCmFileNavigation = new HashSet<FmsConstruction>();
            FmsDrawingHistory = new HashSet<FmsDrawingHistory>();
            FmsManualHistory = new HashSet<FmsManualHistory>();
            FmsMaterial = new HashSet<FmsMaterial>();
            FmsMaterialPurchaseOrder = new HashSet<FmsMaterialPurchaseOrder>();
            FmsReport = new HashSet<FmsReport>();
            FmsWorkResultFile = new HashSet<FmsWorkResultFile>();
            //FmsContract = new HashSet<FmsContract>();
            Sites = new HashSet<CmSite>();
            Equipments = new HashSet<FmsEquipment>();
            FmsEquipmentHistory = new HashSet<FmsEquipmentHistory>();
            BemsReportHistory = new HashSet<BemsReportHistory>();
            CmRentalStatus = new HashSet<CmRentalStatus>();
            FmsWorkRequest = new HashSet<FmsWorkRequest>();
            MonthlyRentalStatus = new HashSet<FmsMonthlyReport>();
            OrganizationChartStatus = new HashSet<FmsMonthlyReport>();
            MonthlyLayoutStatus = new HashSet<FmsMonthlyReport>();
            ParkingManagement = new HashSet<FmsMonthlyReport>();
            RentalManagement = new HashSet<FmsMonthlyReport>();
            MonthlyPriorityWork = new HashSet<FmsMonthlyReport>();
            ImprovementReport = new HashSet<FmsMonthlyReport>();
            NextMonthPriorityWork = new HashSet<FmsMonthlyReport>();
            Cost = new HashSet<FmsMonthlyReport>();
            SurroundingStatus = new HashSet<FmsMonthlyReport>();
            FmsDailyReport = new HashSet<FmsDailyReport>();
            CmSurvey = new HashSet<CmSurvey>();
        }

        [Key]
        public int SiteId { get; set; }
        [Key]
        public int FileId { get; set; }
        public int FileCategoryId { get; set; }
        [StringLength(256)]
        public string Name { get; set; }
        public int? FileSize { get; set; }
        [Column(TypeName = "datetime")]
        public DateTime? CreatedDate { get; set; }
        [StringLength(128)]
        public string ContentType { get; set; }

        [NotMapped]
        public string Url { get; set; }
        [NotMapped]
        public string Path { get; set; }
        [NotMapped]
        public bool IsUpload { get; set; }
        [NotMapped]
        public bool IsDelete { get; set; }

        [ForeignKey("FileCategoryId")]
        public virtual CmFileCategory FileCategory { get; set; }

        [ForeignKey("SiteId")]

        public virtual CmSite Site { get; set; }
        [InverseProperty("CmFile")]
        public virtual CmFacilityFile CmFacilityFile { get; set; }


        [InverseProperty("CmFile")]
        public virtual ICollection<BemsReportHistory> BemsReportHistory { get; set; }

        [InverseProperty("CmFile")]
        public virtual ICollection<CmAnnouncement> CmAnnouncement { get; set; }

        [InverseProperty("CmFile")]
        public virtual ICollection<CmGuideline> CmGuideline { get; set; }

        [InverseProperty(nameof(FmsAccident.CmFile1))]
        public virtual ICollection<FmsAccident> FmsAccidentCmFile1 { get; set; }
        [InverseProperty(nameof(FmsAccident.CmFile2))]
        public virtual ICollection<FmsAccident> FmsAccidentCmFile2 { get; set; }
        [InverseProperty(nameof(FmsAccident.CmFile3))]
        public virtual ICollection<FmsAccident> FmsAccidentCmFile3 { get; set; }
        [InverseProperty(nameof(FmsAccident.CmFile4))]
        public virtual ICollection<FmsAccident> FmsAccidentCmFile4 { get; set; }
        [InverseProperty(nameof(FmsConstruction.CmFile))]
        public virtual ICollection<FmsConstruction> FmsConstructionCmFile { get; set; }
        [InverseProperty(nameof(FmsConstruction.CmFile1))]
        public virtual ICollection<FmsConstruction> FmsConstructionCmFile1 { get; set; }
        [InverseProperty(nameof(FmsConstruction.CmFileNavigation))]
        public virtual ICollection<FmsConstruction> FmsConstructionCmFileNavigation { get; set; }
        [InverseProperty("CmFile")]
        public virtual ICollection<FmsDrawingHistory> FmsDrawingHistory { get; set; }
        [InverseProperty("CmFile")]
        public virtual ICollection<FmsManualHistory> FmsManualHistory { get; set; }
        [InverseProperty("CmFile")]
        public virtual ICollection<FmsMaterial> FmsMaterial { get; set; }
        [InverseProperty("CmFile")]
        public virtual ICollection<FmsMaterialPurchaseOrder> FmsMaterialPurchaseOrder { get; set; }
        [InverseProperty("CmFile")]
        public virtual ICollection<FmsReport> FmsReport { get; set; }
        [InverseProperty("CmFile")]
        public virtual ICollection<FmsWorkResultFile> FmsWorkResultFile { get; set; }
        [InverseProperty(nameof(CmSite.ImageFile))]
        public virtual ICollection<CmSite> Sites { get; set; }
        [InverseProperty(nameof(FmsEquipment.ImageFile))]
        public virtual ICollection<FmsEquipment> Equipments { get; set; }
        [InverseProperty("CmFile")]
        public virtual ICollection<CmRentalStatus> CmRentalStatus { get; set; }
        [InverseProperty("CmFile")]
        public virtual ICollection<FmsEquipmentHistory> FmsEquipmentHistory { get; set; }

        [InverseProperty("CmFile")]
        public virtual ICollection<FmsWorkRequest> FmsWorkRequest { get; set; }
        [InverseProperty("CmFile")]
        public virtual ICollection<FmsWorkSchedule> FmsWorkSchedule { get; set; }
        [InverseProperty("OrganizationChartStatus")]
        public virtual ICollection<FmsMonthlyReport> OrganizationChartStatus { get; set; }
        [InverseProperty("RentalStatus")]
        public virtual ICollection<FmsMonthlyReport> MonthlyRentalStatus { get; set; }
        [InverseProperty("LayoutStatus")]
        public virtual ICollection<FmsMonthlyReport> MonthlyLayoutStatus { get; set; }
        [InverseProperty("ParkingManagement")]
        public virtual ICollection<FmsMonthlyReport> ParkingManagement { get; set; }
        [InverseProperty("RentalManagement")]
        public virtual ICollection<FmsMonthlyReport> RentalManagement { get; set; }
        [InverseProperty("MonthlyPriorityWork")]
        public virtual ICollection<FmsMonthlyReport> MonthlyPriorityWork { get; set; }
        [InverseProperty("ImprovementReport")]
        public virtual ICollection<FmsMonthlyReport> ImprovementReport { get; set; }
        [InverseProperty("NextMonthPriorityWork")]
        public virtual ICollection<FmsMonthlyReport> NextMonthPriorityWork { get; set; }
        [InverseProperty("Cost")]
        public virtual ICollection<FmsMonthlyReport> Cost { get; set; }
        [InverseProperty("SurroundingStatus")]
        public virtual ICollection<FmsMonthlyReport> SurroundingStatus { get; set; }
        [InverseProperty("CmFile")]
        public virtual ICollection<FmsDailyReport> FmsDailyReport { get; set; }
        [InverseProperty("CmFile")]
        public virtual ICollection<CmSurvey> CmSurvey { get; set; }


    }
}
