using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GpsCardGatewayPosition.Model.Cache
{
    public class DevicePositionStatus
    {
        /// <summary>
        /// 最后下发实时定位命令的时间
        /// </summary>
        public DateTime? SendGetLocationTime { get; set; }

        /// <summary>
        /// 最后推送定位下载命令的时间
        /// </summary>
        public DateTime? SendLocationDownloadTime { get; set; }

        /// <summary>
        /// 最后一次成功定位的数据缓存
        /// </summary>
        public PositionCache LastPosition { get; set; }

        public class PositionCache
        {
            /// <summary>
            /// 缓存的上一个可信点的高德经度
            /// </summary>
            public decimal GaodeLon { get; set; }

            /// <summary>
            /// 缓存的上一个可信点的高德纬度
            /// </summary>
            public decimal GaodeLat { get; set; }

            /// <summary>
            /// 百度经度
            /// </summary>
            public decimal BaiduLon { get; set; }

            /// <summary>
            /// 百度纬度
            /// </summary>
            public decimal BaiduLat { get; set; }

            /// <summary>
            /// 原始经度
            /// </summary>
            public decimal OriginalLon { get; set; }

            /// <summary>
            /// 原始纬度
            /// </summary>
            public decimal OriginalLat { get; set; }

            /// <summary>
            /// 地址
            /// </summary>
            public string Address { get; set; }

            /// <summary>
            /// 处理步数信息
            /// </summary>
            public int? Steps { get; set; }

            /// <summary>
            /// 更新时间
            /// </summary>
            public DateTime UpdateTime { get; set; }

            /// <summary>
            /// 原始有效定位时间
            /// 该字段用于填写覆盖LBS定位数据的有效定位数据的定位时间
            /// </summary>
            public DateTime? OriginalTime { get; set; }

            /// <summary>
            /// 过期时间
            /// </summary>
            public DateTime ExpiredTime { get; set; }

            /// <summary>
            /// 定位类型
            /// </summary>
            public int LocationType { get; set; }

            /// <summary>
            /// 城市行政编码
            /// </summary>
            public string CityCode { get; set; }

            /// <summary>
            /// 定位半径
            /// </summary>
            public int Radius { get; set; }

            /// <summary>
            /// 设备上报消息IOT的时间戳
            /// </summary>
            public long SentTicks { get; set; } = 0;

            /// <summary>
            /// 省名
            /// </summary>
            public string Province { get; set; }
            /// <summary>
            /// 市名
            /// </summary>
            public string City { get; set; }
            /// <summary>
            /// 区县名
            /// </summary>
            public string District { get; set; }
        }
        /// <summary>
        /// 最后一次成功定位的请求参数
        /// </summary>
        public object RequestPosition { get; set; }

        public string Remarks { get; set; } = "_GW_";
    }
}