namespace EVCB_OCPP.Domain.Models.Database
{

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

    /// <summary>
    /// 樁的基本檔
    /// </summary>
    [Table("Machine")]
    public partial class Machine
    {
        public Machine()
        {
            Id = Guid.NewGuid().ToString();
            ChargePointSerialNumber = string.Empty;
            ChargeBoxSerialNumber = string.Empty;
            ChargePointModel = string.Empty;
            ChargePointVendor = string.Empty;
            Iccid = string.Empty;
            Imsi = string.Empty;
            MeterType = string.Empty;
            MeterSerialNumber = string.Empty;
            CreatedBy = string.Empty;
            Comment = string.Empty;
            HeartbeatUpdatedOn = new DateTime(1991, 1, 1);
        }

        [Key]
        [StringLength(36)]
        public string Id { get; set; }

        /// <summary>
        /// ChargeBoxId
        /// </summary>
        [Index("IX_ChargeBoxId", IsUnique = true)]
        [StringLength(50)]
        public string ChargeBoxId { get; set; }

        /// <summary>
        /// chargePointSerialNumber
        /// </summary>       
        [StringLength(25)]
        public string ChargePointSerialNumber { get; set; }

        /// <summary>
        /// chargeBoxSerialNumber
        /// </summary>    
        [StringLength(25)]
        public string ChargeBoxSerialNumber { get; set; }



        /// <summary>
        /// chargePointModel
        /// </summary>      
        [StringLength(20)]
        public string ChargePointModel { get; set; }

        /// <summary>
        /// chargePointVendor
        /// </summary>
        [StringLength(20)]
        public string ChargePointVendor { get; set; }

        /// <summary>
        /// iccid
        /// </summary>
        [StringLength(20)]
        public string Iccid { get; set; }


        /// <summary>
        /// imsi
        /// </summary>
        [StringLength(20)]
        public string Imsi { get; set; }

        /// <summary>
        /// MeterType
        /// </summary>
        [StringLength(25)]
        public string MeterType { get; set; }

        /// <summary>
        /// meterSerialNumber
        /// </summary>
        [StringLength(25)]
        public string MeterSerialNumber { get; set; }


        /// <summary>
        /// 建立時間
        /// </summary>       
        public DateTime CreatedOn { get; set; }

        /// <summary>
        /// 建立者
        /// </summary>
        [StringLength(50)]
        public string CreatedBy { get; set; }

        /// <summary>
        /// 描述
        /// </summary>
        [StringLength(100)]
        public string Comment { get; set; }

        /// <summary>
        /// 客戶id
        /// </summary>      
        public Guid CustomerId { get; set; }

 


        /// <summary>
        /// 充電槍個數
        /// </summary>
        public int GunAmt { get; set; }



        /// <summary>
        /// 心跳包更新時間
        /// </summary>
        public DateTime HeartbeatUpdatedOn { get; set; }

        /// <summary>
        /// 機器回報的韌體版本編號
        /// </summary>
        public int? FW_VersionReport { get; set; }


        /// <summary>
        /// 機器被指派的韌體版本編號
        /// </summary>
        public int? FW_AssignedVersion { get; set; }

        /// <summary>
        /// 是否在線
        /// </summary>
        public bool Online { get; set; }

        /// <summary>
        /// 電樁連線方式 
        /// 0:unknown 
        /// 1:1.6J with http  
        /// 2:1.6J with https 
        /// </summary>       
        public int ConnectionType { get; set; }


        [ForeignKey("CustomerId")]
        public virtual Customer Customer { get; set; }


        /// <summary>
        /// 斷網時間
        /// </summary>
        public DateTime? OfflineOn { get; set; }

        /// <summary>
        /// firmwareVersion
        /// </summary>
        [StringLength(50)]
        public string FW_CurrentVersion { get; set; }

        [DataType("decimal(6 ,2)")]
        public decimal RatedPower { set; get; }

        /// <summary>
        /// ConnectorType
        /// </summary>
        [StringLength(50)]
        public string ConnectorType { get; set; }

        /// <summary>
        /// ConnectorPowerType
        /// </summary>
        [StringLength(50)]
        public string ConnectorPowerType { get; set; }

        [DataType("decimal(10 ,6)")]
        public decimal Latitude { set; get; }

        [DataType("decimal(10 ,6)")]
        public decimal Longitude { set; get; }


        /// <summary>
        /// VendorId
        /// </summary>
        [StringLength(50)]
        public string VendorId { get; set; }

        /// <summary>
        /// ModelName
        /// </summary>
        [StringLength(50)]
        public string ModelName { get; set; }

        /// <summary>
        /// Board Versions
        /// </summary>       
        public string BoardVersions { get; set; }


        public bool IsDelete { set; get; }

        /// <summary>
        /// TTIA樁號代號
        /// </summary>
        public int TTIATag { set; get; }




    }
}