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

namespace FMSAdmin.Entities {
    public partial class CmSite {
        public CmSite() {
            BemsAlarmSetting = new HashSet<BemsAlarmSetting>();
            BemsChartInfo = new HashSet<BemsChartInfo>();
            BemsEnergyConfigPercentMonth = new HashSet<BemsEnergyConfigPercentMonth>();
            BemsEnergyConfigPercentWeek = new HashSet<BemsEnergyConfigPercentWeek>();
            BemsMeasureSchedule = new HashSet<BemsMeasureSchedule>();
            BemsNoticePrice = new HashSet<BemsNoticePrice>();
            BemsPeakHistory = new HashSet<BemsPeakHistory>();
            BemsPeopleIncrease = new HashSet<BemsPeopleIncrease>();
            BemsRentalRate = new HashSet<BemsRentalRate>();
            BemsSitePrice = new HashSet<BemsSitePrice>();
            BemsSitePriceHistory = new HashSet<BemsSitePriceHistory>();
            BemsWeatherHourly = new HashSet<BemsWeatherHourly>();
            CmBuilding = new HashSet<CmBuilding>();
            CmCompany = new HashSet<CmCompany>();
            CmDepartment = new HashSet<CmDepartment>();
            CmFacilityTempSet = new HashSet<CmFacilityTempSet>();
            CmFile = new HashSet<CmFile>();
            CmHoliday = new HashSet<CmHoliday>();
            CmHolidayCustom = new HashSet<CmHolidayCustom>();
            CmMenu = new HashSet<CmMenu>();
            CmPatrolCourse = new HashSet<CmPatrolCourse>();
            CmPatrolCoursePos = new HashSet<CmPatrolCoursePos>();
            CmPatrolGroup = new HashSet<CmPatrolGroup>();
            CmPatrolHistory = new HashSet<CmPatrolHistory>();
            CmPatrolHistoryPos = new HashSet<CmPatrolHistoryPos>();
            CmPatrolPlan = new HashSet<CmPatrolPlan>();
            CmPatrolPos = new HashSet<CmPatrolPos>();
            CmPatrolSchedule = new HashSet<CmPatrolSchedule>();
            CmPatrolType = new HashSet<CmPatrolType>();
            CmUserGroup = new HashSet<CmUserGroup>();
            CmZoneTempHumiSet = new HashSet<CmZoneTempHumiSet>();
            FmsDrawing = new HashSet<FmsDrawing>();
            FmsLicense = new HashSet<FmsLicense>();
            FmsMaterial = new HashSet<FmsMaterial>();
            FmsMaterialCarriedForward = new HashSet<FmsMaterialCarriedForward>();
            FmsMaterialCodeLocation = new HashSet<FmsMaterialCodeLocation>();
            FmsMaterialPurchaseOrder = new HashSet<FmsMaterialPurchaseOrder>();
            FmsMaterialPurchaseRequest = new HashSet<FmsMaterialPurchaseRequest>();
            FmsMaterialRelease = new HashSet<FmsMaterialRelease>();
            FmsMaterialStored = new HashSet<FmsMaterialStored>();
            FmsMaterialTradeCompany = new HashSet<FmsMaterialTradeCompany>();
            FmsMaterialWarehouse = new HashSet<FmsMaterialWarehouse>();
            FmsReport = new HashSet<FmsReport>();
            FmsWorkCodeCauseClass = new HashSet<FmsWorkCodeCauseClass>();
            FmsWorkCodeCycleUnit = new HashSet<FmsWorkCodeCycleUnit>();
            FmsWorkCodeEmergency = new HashSet<FmsWorkCodeEmergency>();
            FmsWorkCodeHolidayWorkType = new HashSet<FmsWorkCodeHolidayWorkType>();
            FmsWorkCodeLegalInspectionAgency = new HashSet<FmsWorkCodeLegalInspectionAgency>();
            FmsWorkOrder = new HashSet<FmsWorkOrder>();
            FmsWorkRequest = new HashSet<FmsWorkRequest>();
            BemsAlarmGroupUser = new HashSet<BemsAlarmGroupUser>();
            FmsAccident = new HashSet<FmsAccident>();
            Equipments = new HashSet<FmsEquipment>();
            EquipmentRentInfoList = new HashSet<FmsEquipmentRentInfo>();
            FmsManual = new HashSet<FmsManual>();
            FmsManualHistory = new HashSet<FmsManualHistory>();
            FmsEquipmentHistory = new HashSet<FmsEquipmentHistory>();
            FmsAlarmPointList = new HashSet<FmsAlarmPoint>();
            FmsAlarmLogList = new HashSet<FmsAlarmLog>();
            BemsMonitoringPointHistory15minList = new HashSet<BemsMonitoringPointHistory15min>();
            CmRentalStatus = new HashSet<CmRentalStatus>();
            CmOrganizationChartStatus = new HashSet<CmOrganizationChartStatus>();
            CmCertificateStatus = new HashSet<CmCertificateStatus>();
            CmLayout = new HashSet<CmLayout>();
            FmsFacilityStateDetail = new HashSet<FmsFacilityStateDetail>();
            BemsReportHistory = new HashSet<BemsReportHistory>();
            FmsDailyReport = new HashSet<FmsDailyReport>();
            FmsMonthlyReport = new HashSet<FmsMonthlyReport>();
            FmsEnergyAnalysis = new HashSet<FmsEnergyAnalysis>();
            CmSurvey = new HashSet<CmSurvey>();
        }

        [Display(Name = "고유번호"), Key]
        public int SiteId { get; set; }
        [Display(Name = "현장 이름"), Required]
        [StringLength(50)]
        public string Name { get; set; }
        [Display(Name = "현장 주소 우편번호 1")]
        [StringLength(5)]
        public string AddressZip1 { get; set; }
        [Display(Name = "현장 주소 우편번호 2")]
        [StringLength(3)]
        public string AddressZip2 { get; set; }
        [Display(Name = "현장 주소 1")]
        [StringLength(100)]
        public string Address1 { get; set; }
        [Display(Name = "현장 주소 ")]
        [StringLength(100)]
        public string Adderss2 { get; set; }
        [Display(Name = "현장 전화번호")]
        [StringLength(24)]
        public string PhoneNo { get; set; }
        [Display(Name = "현장 홈페이지"), Column("URL")]
        [StringLength(100)]
        public string Url { get; set; }
        [Display(Name = "현장 세부설명")]
        [StringLength(1024)]
        public string Comment { get; set; }
        [Display(Name = "사용 유무")]
        public bool? IsUse { get; set; }
        [Display(Name = "정렬 번호")]
        public int? SortOrderNo { get; set; }
        [Display(Name = "데이터 생성일"), Column(TypeName = "datetime")]
        public DateTime? InsertedDate { get; set; }
        [Display(Name = "데이터 생성자 고유번호")]
        [StringLength(24)]
        public string InsertedUserId { get; set; }
        [Display(Name = "데이터 변경일"), Column(TypeName = "datetime")]
        public DateTime? UpdatedDate { get; set; }
        [Display(Name = "데이터 변경자 고유번호")]
        [StringLength(24)]
        public string UpdatedUserId { get; set; }
        [Display(Name = "(자동-true/수동-false) / 제어스케줄")]
        public bool? IsControlSchedule { get; set; }
        [Display(Name = "제어 스케쥴 시각")]
        public int? ScheduleCheckHour { get; set; }
        [Display(Name = "최대전력")]
        public double? MaxPeak { get; set; }
        [Display(Name = "위도"), Column("lat")]
        public double? Lat { get; set; }
        [Display(Name = "경도"), Column("lng")]
        public double? Lng { get; set; }
        [Display(Name = "제어스케쥴"), Column("controlSchedule")]
        public bool? ControlSchedule { get; set; }
        [Display(Name = "HDD기준온도"), Column("HDD")]
        [StringLength(24)]
        public string Hdd { get; set; }
        [Display(Name = "CDD기준온도"), Column("CDD")]
        [StringLength(24)]
        public string Cdd { get; set; }
        [Display(Name = "건축규모")]
        [StringLength(50)]
        public string BuildingSize { get; set; }
        [Display(Name = "연면적")]
        [StringLength(24)]
        public string GrossArea { get; set; }
        [Display(Name = "건축면적")]
        [StringLength(24)]
        public string BuildingArea { get; set; }
        [Display(Name = "용적율")]
        [StringLength(24)]
        public string FloorAreaRatio { get; set; }
        [Display(Name = "건폐율")]
        [StringLength(24)]
        public string BuildingCoverageRatio { get; set; }
        [Display(Name = "주용도")]
        [StringLength(10)]
        public string MainUse { get; set; }
        [Display(Name = "준공연도")]
        [StringLength(24)]
        public string CompletionDate { get; set; }
        [Display(Name = "용도별표준값")]
        [StringLength(24)]
        public string Standard { get; set; }
        [Display(Name = "주용도Index")]
        public int? MainUseIndex { get; set; }
        [Display(Name = "이미지")]
        public int? ImageFileId { get; set; }

        [ForeignKey("SiteId,ImageFileId")]
        public virtual CmFile ImageFile { get; set; }

        [Display(Name = "날씨API 시도")]
        public string ApiSido { get; set; }
        [Display(Name = "날씨API 시구군")]
        public string ApiSigun { get; set; }

        [Display(Name = "대시보드 이미지맵 X")]
        public int? ImageMapX { get; set; }
        [Display(Name = "대시보드 이미지맵 Y")]
        public int? ImageMapY { get; set; }

        [Display(Name = "설계/감리")]
        public string DesignSupervision { get; set; }
        [Display(Name = "시공사")]
        public string ConstructionCompany { get; set; }
        [Display(Name = "공사기간")]
        public string ConstructionPeriod { get; set; }
        [Display(Name = "구조")]
        public string Structure { get; set; }
        [Display(Name = "로비바닥")]
        public string LobbyFloor { get; set; }
        [Display(Name = "사무실바닥")]
        public string OfficeFloor { get; set; }
        [Display(Name = "화장실바닥")]
        public string ToiletFloor { get; set; }
        [Display(Name = "E/V홀")]
        public string EVHall { get; set; }
        [Display(Name = "주차장")]
        public string ParkingLot { get; set; }
        [Display(Name = "외벽")]
        public string OuterWall { get; set; }
        [Display(Name = "대지면적")]
        public string LandArea { get; set; }
        [Display(Name = "조경면적")]
        public string LandscapingArea { get; set; }
        [Display(Name = "건물층수")]
        public string BuildingFloors { get; set; }
        [Display(Name = "건고")]
        public string BuildingHeight { get; set; }
        [Display(Name = "전용율")]
        public string ConversionRate { get; set; }
        [Display(Name = "주차장시설")]
        public string ParkingFacilities { get; set; }
        [Display(Name = "강당시설")]
        public string AuditoriumFacilities { get; set; }
        public bool IsAdmin { get; set; }
        [InverseProperty("Site")]
        public virtual BemsEnergyDailyRegression BemsEnergyDailyRegression { get; set; }
        [InverseProperty("Site")]
        public virtual BemsPeakInfo BemsPeakInfo { get; set; }
        [InverseProperty("Site")]
        public virtual CmHolidayWeekend CmHolidayWeekend { get; set; }

        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<BemsAlarmSetting> BemsAlarmSetting { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<BemsChartInfo> BemsChartInfo { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<BemsEnergyConfigPercentMonth> BemsEnergyConfigPercentMonth { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<BemsEnergyConfigPercentWeek> BemsEnergyConfigPercentWeek { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<BemsMeasureSchedule> BemsMeasureSchedule { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<BemsNoticePrice> BemsNoticePrice { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<BemsPeakHistory> BemsPeakHistory { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<BemsPeopleIncrease> BemsPeopleIncrease { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<BemsRentalRate> BemsRentalRate { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<BemsSitePrice> BemsSitePrice { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<BemsSitePriceHistory> BemsSitePriceHistory { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<BemsWeatherHourly> BemsWeatherHourly { get; set; }
        [JsonIgnore]
        [InverseProperty("CmSite")]
        public virtual ICollection<BemsReportFormat> BemsReportFormat { get; set; }
        [JsonIgnore]
        [InverseProperty("CmSite")]
        public virtual ICollection<CmBuilding> CmBuilding { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmCompany> CmCompany { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmDepartment> CmDepartment { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmFacilityTempSet> CmFacilityTempSet { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmFile> CmFile { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmHoliday> CmHoliday { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmHolidayCustom> CmHolidayCustom { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmMenu> CmMenu { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmPatrolCourse> CmPatrolCourse { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmPatrolCoursePos> CmPatrolCoursePos { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmPatrolGroup> CmPatrolGroup { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmPatrolHistory> CmPatrolHistory { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmPatrolHistoryPos> CmPatrolHistoryPos { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmPatrolPlan> CmPatrolPlan { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmPatrolPos> CmPatrolPos { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmPatrolSchedule> CmPatrolSchedule { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmPatrolType> CmPatrolType { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmUserGroup> CmUserGroup { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<CmZoneTempHumiSet> CmZoneTempHumiSet { get; set; }
        [JsonIgnore]
        [InverseProperty("CmSite")]
        public virtual ICollection<FmsDrawing> FmsDrawing { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsLicense> FmsLicense { get; set; }
        [JsonIgnore]
        [InverseProperty("CmSite")]
        public virtual ICollection<FmsMaterial> FmsMaterial { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsMaterialCarriedForward> FmsMaterialCarriedForward { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsMaterialCodeLocation> FmsMaterialCodeLocation { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsMaterialPurchaseOrder> FmsMaterialPurchaseOrder { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsMaterialPurchaseRequest> FmsMaterialPurchaseRequest { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsMaterialRelease> FmsMaterialRelease { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsMaterialStored> FmsMaterialStored { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsMaterialTradeCompany> FmsMaterialTradeCompany { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsMaterialWarehouse> FmsMaterialWarehouse { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsReport> FmsReport { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsWorkCodeCauseClass> FmsWorkCodeCauseClass { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsWorkCodeCycleUnit> FmsWorkCodeCycleUnit { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsWorkCodeEmergency> FmsWorkCodeEmergency { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsWorkCodeHolidayWorkType> FmsWorkCodeHolidayWorkType { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsWorkCodeLegalInspectionAgency> FmsWorkCodeLegalInspectionAgency { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsWorkOrder> FmsWorkOrder { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsWorkRequest> FmsWorkRequest { get; set; }

        [InverseProperty("CmSite")]
        public virtual ICollection<BemsAlarmGroupUser> BemsAlarmGroupUser { get; set; }
        [InverseProperty("CmSite")]
        public virtual ICollection<FmsAccident> FmsAccident { get; set; }

        [InverseProperty(nameof(FmsEquipment.Site))]
        public virtual ICollection<FmsEquipment> Equipments { get; set; }
        [InverseProperty(nameof(FmsEquipmentRentInfo.Site))]
        public virtual ICollection<FmsEquipmentRentInfo> EquipmentRentInfoList { get; set; }

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

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

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

        [InverseProperty("Site")]
        public virtual ICollection<FmsAlarmPoint> FmsAlarmPointList { get; set; }
        [InverseProperty("Site")]
        public virtual ICollection<FmsAlarmLog> FmsAlarmLogList { get; set; }

        [InverseProperty("Site")]
        public virtual ICollection<BemsMonitoringPointHistory15min> BemsMonitoringPointHistory15minList { get; set; }

        [InverseProperty("CmSite")]
        public virtual ICollection<CmRentalStatus> CmRentalStatus { get; set; }
        [InverseProperty("CmSite")]
        public virtual ICollection<CmOrganizationChartStatus> CmOrganizationChartStatus { get; set; }
        [InverseProperty("CmSite")]
        public virtual ICollection<CmCertificateStatus> CmCertificateStatus { get; set; }
        [InverseProperty("CmSite")]
        public virtual ICollection<CmLayout> CmLayout { get; set; }
        [JsonIgnore]
        [InverseProperty("CmSite")]
        public virtual ICollection<FmsFacilityStateDetail> FmsFacilityStateDetail { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<BemsReportHistory> BemsReportHistory { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsDailyReport> FmsDailyReport { get; set; }
        [JsonIgnore]
        [InverseProperty("Site")]
        public virtual ICollection<FmsMonthlyReport> FmsMonthlyReport { get; set; }
        [JsonIgnore]
        [InverseProperty("CmSite")]
        public virtual ICollection<FmsEnergyAnalysis> FmsEnergyAnalysis { get; set; }
        [JsonIgnore]
        [InverseProperty("CmSite")]
        public virtual ICollection<CmSurvey> CmSurvey { get; set; }

    }
}
