using Common.Models;
using MegaRobo.C00225155.Entities.FromWeb;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Common.HTTPModels
{
    public class ToBsUnLoadData
    {
        [JsonProperty("sampleSeqs")]
        public List<ToBsSampleSeq> SampleSeqs { get; set; }

        [JsonProperty("config")]
        public ToBsConfig Config { get; set; }

        [JsonProperty("needFixture")]
        public List<ToBsFixtureInfo> NeedFixture { get; set; }


    }

    #region SampleSeq类
    public class ToBsSampleSeq
    {
        /// <summary>
        /// 手套箱是A1
        /// </summary>
        [JsonProperty("area")]
        public string Area { get; set; }

        /// <summary>
        /// 载具位置1~7
        /// </summary>
        [JsonProperty("carrier")]
        public string Carrier { get; set; }

        /// <summary>
        /// 样本瓶名称
        /// </summary>
        [JsonProperty("code")]
        public string Code { get; set; }

        [JsonProperty("order")]
        public object Order { get; set; }

        /// <summary>
        /// 样品编号
        /// </summary>
        [JsonProperty("originSeqIds")]
        public List<long> OriginSeqIds { get; set; }

        /// <summary>
        /// 在载具中的位置
        /// </summary>
        [JsonProperty("pos")]
        public string Pos { get; set; }

        [JsonProperty("sampleConfig")]
        public ToBsSampleConfig SampleConfig { get; set; }

        /// <summary>
        /// _5mL = 1,_12mL = 2,其它 = 0
        /// </summary>
        [JsonProperty("sampleType")]
        public string SampleType { get; set; }
    }

    public class ToBsSampleConfig
    {
        [JsonProperty("materialDoseFunctionFlow")]
        public List<ToBsMaterialDoseFunctionFlow> MaterialDoseFunctionFlow { get; set; }

        /// <summary>
        /// box 二维码匹配下面的boxinfo
        /// </summary>
        [JsonProperty("snCode")]
        public string SnCode { get; set; }
    }

    public class ToBsMaterialDoseFunctionFlow
    {
        /// <summary>
        /// 0液1固
        /// </summary>
        [JsonProperty("functionFlowType")]
        public int FunctionFlowType { get; set; }

        [JsonProperty("realVolumn")]
        public double RealVolumn { get; set; }

        /// <summary>
        /// 实际添加量
        /// </summary>
        [JsonProperty("targetVolumn")]
        public double TargetVolumn { get; set; }

        /// <summary>
        /// 添加物名称
        /// </summary>
        [JsonProperty("userMaterialName")]
        public string UserMaterialName { get; set; }
    }
    #endregion

    #region config类
    public class ToBsConfig
    {
        [JsonProperty("boxInfo")]
        public List<ToBsBoxInfo> BoxInfo { get; set; }
    }

    public class ToBsBoxInfo
    {
        [JsonProperty("detail")]
        public List<Detail> Detail { get; set; }

        [JsonProperty("fixtureType")]
        public int FixtureType { get; set; }

        [JsonProperty("posInUpload")]
        public int PosInUpload { get; set; }

        [JsonProperty("remainCount")]
        public int RemainCount { get; set; }

        [JsonProperty("snCode")]
        public string SnCode { get; set; }
    }
    #endregion

    #region NeedFixture类
    public class ToBsFixtureInfo
    {
        /// <summary>
        /// 放到转移位置1~7
        /// </summary>
        [JsonProperty("boxIdInDoseUpload")]
        public int BoxIdInDoseUpload { get; set; }

        /// <summary>
        /// 治具类型
        /// </summary>
        [JsonProperty("fixtureType")]
        public int FixtureType { get; set; }

        /// <summary>
        /// 治具二维码
        /// </summary>
        [JsonProperty("snCode")]
        public string SnCode { get; set; }
    }
    #endregion
}
