using Newtonsoft.Json;
using System.Collections.Generic;

namespace Utils
{
    public class CarInOrOut
    {
        public CarInOrOut()
        {
        }

        /// <summary>
        /// 车牌识别结果
        /// </summary>
        [JsonProperty("AlarmInfoPlate")]
        public AlarmInfoPlate AlarmInfoPlate { get; set; }
    }

    /// <summary>
    /// 车牌识别结果
    /// </summary>
    public class AlarmInfoPlate
    {

        public AlarmInfoPlate() { }
        /// <summary>
        /// 默认通道号
        /// </summary>
        [JsonProperty("channel")]
        public int Channel { get; set; }


        /// <summary>
        /// 设备名称
        /// </summary>
        [JsonProperty("deviceName")]
        public string DeviceName { get; set; }


        /// <summary>
        /// 设备 ip 地址
        /// </summary>
        [JsonProperty("ipaddr")]
        public string Ipaddr { get; set; }

        /// <summary>
        /// 实际数据
        /// </summary>
        [JsonProperty("result")]
        public Result Result { get; set; }

        /// <summary>
        /// 设备序列号
        /// </summary>
        [JsonProperty("serialno")]
        public string Serialno { get; set; }


        [JsonProperty("user_data")]
        public string User_data { get; set; }



    }

    /// <summary>
    /// 实际数据
    /// </summary>
    public class Result
    {

        public Result() { }

        /// <summary>
        /// 车牌识别结果信息
        /// </summary>
        [JsonProperty("PlateResult")]
        public PlateResult PlateResult { get; set; }
    }

    /// <summary>
    /// 车牌识别结果信息
    /// </summary>
    public class PlateResult
    {
        public PlateResult() { }

        /// <summary>
        /// 亮度评价
        /// </summary>
        [JsonProperty("bright")]
        public int Bright { get; set; }

        /// <summary>
        /// 车身亮度
        /// </summary>
        [JsonProperty("carBright")]
        public int CarBright { get; set; }

        /// <summary>
        /// 车身颜色
        /// </summary>
        [JsonProperty("carColor")]
        public int CarColor { get; set; }

        /// <summary>
        /// 车牌颜色 0：未知、1：蓝色、2：黄色、3：白色、4：黑 色、5：绿色
        /// </summary>
        [JsonProperty("colorType")]
        public int ColorType { get; set; }


        [JsonProperty("colorValue")]
        public int ColorValue { get; set; }

        /// <summary>
        /// 识别结果可信度 1-100
        /// </summary>
        [JsonProperty("confidence")]
        public int Confidence { get; set; }


        /// <summary>
        /// 车的行进方向，0：未知，1：左，2：右，3：上， 4：下
        /// </summary>
        [JsonProperty("direction")]
        public int Direction { get; set; }


        [JsonProperty("gioouts")]
        public List< Gioouts> Gioouts { get; set; }

        /// <summary>
        /// 识别车牌小图片内容经过 base64 后的字符串
        /// </summary>
        [JsonProperty("imageFragmentFile")]
        public string ImageFragmentFile { get; set; }


        /// <summary>
        /// 识别小图片内容长度，注意不是 base64 后的长度
        /// </summary>
        [JsonProperty("imageFragmentFileLen")]
        public int ImageFragmentFileLen { get; set; }


        /// <summary>
        /// 设备离线状态，0：在线，1：离线
        /// </summary>
        [JsonProperty("isoffline")]
        public int Isoffline { get; set; }

        /// <summary>
        /// 车牌号字符串，如“京 AAAAAA”
        /// </summary>
        [JsonProperty("license")]
        public string License { get; set; }


        [JsonProperty("license_ext_type")]
        public int License_ext_type { get; set; }

        /// <summary>
        /// 车牌在图片中位置
        /// </summary>
        [JsonProperty("location")]
        public Location Location { get; set; }

        /// <summary>
        /// 识别结果车牌 ID
        /// </summary>
        [JsonProperty("plateid")]
        public int Plateid { get; set; }


        /// <summary>
        /// 识别结果对应帧的时间戳
        /// </summary>
        [JsonProperty("timeStamp")]
        public TimeStamp TimeStamp { get; set; }

        /// <summary>
        /// 识别所用时间
        /// </summary>
        [JsonProperty("timeUsed")]
        public int TimeUsed { get; set; }



        /// <summary>
        /// 当前结果的触发类型：1：自动触发类型、2：外部输入触 发（IO 输入）、4：软件触发（SDK）、8：虚拟线圈触发
        /// </summary>
        [JsonProperty("triggerType")]
        public int TriggerType { get; set; }

        /// <summary>
        /// 车牌类型 0：未知车牌:、1：蓝牌小汽车、2：:黑牌小汽车、 3：单排黄牌、4：双排黄牌、
        /// 5：警车车牌、6：武警车 牌、7：个性化车牌、8：单排军车牌、9：双排军车牌、1 0：使馆车牌、
        /// 11：香港进出中国大陆车牌、12：农用车牌、13：教练车牌、14：澳门进出中国大陆车牌、
        /// 15：双 层武警车牌、16：武警总队车牌、17：双层武警总队车牌、 18：民航车牌、19：新能源车牌
        /// </summary>
        [JsonProperty("type")]
        public int Type { get; set; }



    }

    public class Gioouts
    {
        public Gioouts() { }


        /// <summary>
        /// IO OUT 序号
        /// </summary>
        [JsonProperty("ionum")]
        public string Ionum { get; set; }

        /// <summary>
        /// 开闸类型：HTTP_IO_OUT_STATUS
        /// </summary>
        [JsonProperty("Ctrltype")]
        public string ctrltype { get; set; }
    }
    /// <summary>
    /// 车牌在图片中位置
    /// </summary>
    public class Location
    {
        public Location() { }

        /// <summary>
        /// 位置为矩形区域；left\right\top\bottom:车牌在图片中位 置
        /// </summary>
        [JsonProperty("RECT")]
        public RECT RECT { get; set; }
    }

    /// <summary>
    /// 位置为矩形区域；left\right\top\bottom:车牌在图片中位 置
    /// </summary>
    public class RECT
    {
        public RECT() { }

        [JsonProperty("bottom")]
        public int Bottom { get; set; }


        [JsonProperty("left")]
        public int Left { get; set; }


        [JsonProperty("right")]
        public int Right { get; set; }


        [JsonProperty("top")]
        public int Top { get; set; }
    }

    /// <summary>
    /// 识别结果对应帧的时间戳
    /// </summary>
    public class TimeStamp
    {

        public TimeStamp() { }
        /// <summary>
        /// 时间戳结构体类型
        /// </summary>
        [JsonProperty("Timeval")]
        public Timeval Timeval { get; set; }
    }

    /// <summary>
    /// 时间戳结构体类型
    /// </summary>
    public class Timeval
    {
        public Timeval() { }

        /// <summary>
        /// 时间，天
        /// </summary>
        [JsonProperty("decday")]
        public int Decday { get; set; }

        /// <summary>
        /// 时间，小时
        /// </summary>
        [JsonProperty("dechour")]
        public int Dechour { get; set; }

        /// <summary>
        /// 时间，分钟
        /// </summary>
        [JsonProperty("decmin")]
        public int Decmin { get; set; }

        /// <summary>
        /// 时间，月
        /// </summary>
        [JsonProperty("decmon")]
        public int Decmon { get; set; }

        /// <summary>
        /// 时间，秒
        /// </summary>
        [JsonProperty("decsec")]
        public int Decsec { get; set; }

        /// <summary>
        /// 时间，年
        /// </summary>
        [JsonProperty("decyear")]
        public int Decyear { get; set; }

        /// <summary>
        /// 从 1970 年 1 月 1 日到对应帧的秒
        /// </summary>
        [JsonProperty("sec")]
        public int Sec { get; set; }

        /// <summary>
        /// 从 1970 年 1 月 1 日到对应帧的毫秒
        /// </summary>
        [JsonProperty("usec")]
        public int Usec { get; set; }
    }
}
