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

namespace MegaRobo.C00225155.ControlDevices
{
    public class LoginResponse
    {
        public string id { get; set; }
        public string name { get; set; }
        public string account { get; set; }
        public string role { get; set; }
        public string password { get; set; }
        public int pwdSaltFlag { get; set; }
        public string authenticationToken { get; set; }
    }

    public class LCContainerVolume
    {
        public int tray { get; set; }
        public int rack { get; set; }
        public int rows { get; set; }
        public int cols { get; set; }
        public int units { get; set; }
        public int max { get; set; }
        public List<List<VolumeInfo>> volumes { get; set; }
    }

    public class VolumeInfo
    {
        public int max { get; set; } // 最大体积
        public int vol { get; set; } // 当前体积
    }

    public class Features
    {
        public string name { get; set; }
        public string type { get; set; }
        public string sn { get; set; }
        public List<string> features { get; set; }
    }

    public class DrawerState
    {
        public string type { get; set; }
        public string sn { get; set; }
        public DrawersOpen drawersOpen { get; set; }
    }

    public class DrawersOpen
    {
        public bool additionalProp1 { get; set; }
        public bool additionalProp2 { get; set; }
        public bool additionalProp3 { get; set; }
    }

    public class LCG7167DrawerState
    {
        public string drawer { get; set; }
        public bool drawerOpen { get; set; }
        public int plateStateFront { get; set; }
        public int plateStateBack { get; set; }
    }

    public class GCModuleInfo
    {
        public int doorOpen { get; set; }
        public int methodRuntime { get; set; }
        public int runTime { get; set; }
        public int methodPostTime { get; set; }
        public int postTime { get; set; }
        public int status { get; set; }
        public int ready { get; set; }
        public List<string> notReadyInfo { get; set; }
        public List<string> errorInfo { get; set; }
        public int hostReady { get; set; }
        public int connectionState { get; set; }
        public string alsRunStatus { get; set; }

        public AlsFront alsFront { get; set; }
        public AlsBack alsBack { get; set; }
        public AlsTray alsTray { get; set; }
    }

    public class AlsFront
    {
        public int capacity { get; set; }
        public string model { get; set; }
        public int doorOpen { get; set; }
        public string status { get; set; }
        public state state { get; set; }
    }

    public class AlsBack
    {
        public int capacity { get; set; }
        public string model { get; set; }
        public int doorOpen { get; set; }
        public string status { get; set; }
        public state state { get; set; }
    }

    public class AlsTray
    {
        public int capacity { get; set; }
        public string model { get; set; }
        public int doorOpen { get; set; }
        public string status { get; set; }
        public state state { get; set; }
    }

    public class state
    {
        public int key { get; set; }
        public string description { get; set; }
    }

    public class LCModuleInfo
    {
        List<LCModule> modules { get; set; } // 模块列表
    }

    public class LCModule
    {
        public string moduleId { get; set; } // 模块ID
        public string moduleName { get; set; } // 模块名称
        public state emfSummary { get; set; } // EMF摘要状态
        public state error { get; set; } // 错误状态
        public state notReady { get; set; } // 未就绪状态
        public state connection { get; set; } // 连接状态
        public long postTime { get; set; } // 发布时间（时间戳）
        public long methodPostTime { get; set; } // 方法发布时间（时间戳）
        public long runtime { get; set; } // 运行时间（可能是毫秒）
        public long methodRuntime { get; set; } // 方法运行时间（可能是毫秒）
        public string runState { get; set; } // 运行状态（如"Running"、"Stopped"）
    }

    public class EmptyData
    {
        // 无需任何属性，仅作为占位符匹配JSON中的空对象
    }

    public class BottleVolumesResponse
    {
        public List<bottleVolume> bottleVolumes { get; set; }
    }

    public class bottleVolume
    {
        public string name { get; set; }
        public int current { get; set; }
        public int maximum { get; set; }
    }

    public class compose
    {
        public int additionalProp1 { get; set; }
        public int additionalProp2 { get; set; }
        public int additionalProp3 { get; set; }
    }

    public class purgeParameters
    {
        public int duration { get; set; }
        public int flow { get; set; }
        public compose drawersOpen { get; set; }
    }

    public class purgeState
    {
        public bool isPurging { get; set; }
        public int remainingPurgeTime { get; set; }
        public purgeParameters purgeParameters { get; set; }
        public bool isConditioning { get; set; }
        public int remainingConditionTime { get; set; }
        public int conditionTime { get; set; }
        public bool isPriming { get; set; }
        public int elapsedPrimeTime { get; set; }
    }

    public class purgeCleaningParam
    {
        public int duration { get; set; }
        public int flow { get; set; }
        public compose compositions { get; set; }
    }

    public class wasteVolume
    {
        public int current { get; set; }
        public int maximum { get; set; }
    }

    public class PlateInfo
    {
        public string id { get; set; }
        public string displayName { get; set; }
        public bool isPlate { get; set; }
        public int numLocation { get; set; }
        [JsonPropertyName("readonly")]
        public bool rreadonly { get; set; }
        public string xml { get; set; }
        public int numRows { get; set; }
        public int numCols { get; set; }
        public int isLinear { get; set; }
        public int rowStart { get; set; }
        public int colStart { get; set; }
        public int start { get; set; }
        public string original1 { get; set; }
    }

    public class platePlacement
    {
        public string moduleId { get; set; }
        public string moduleName { get; set; }
        public string state { get; set; }
        public string summary { get; set; }
    }

    public class limsSamples
    {
        public string id { get; set; }
        public string barCode { get; set; }
        public string type { get; set; }
        public string collectDate { get; set; }
        public string name { get; set; }
        public string equipment { get; set; }
        public string sampleSite { get; set; }
        public string status { get; set; }
        public string batchId { get; set; }
        public string addDateTime { get; set; }
        public List<viaParam> vialList { get; set; }
    }

    public class viaParam
    {
        public string id { get; set; }
        public string type { get; set; }
        public string barCode { get; set; }
        public string sampleBarCode { get; set; }
        public string sampleId { get; set; }
        public string labName { get; set; }
        public string analysisProject { get; set; }
        public string analysisMethod { get; set; }
        public int analysisTimeInSecond { get; set; }
        public string testCode { get; set; }
        public string status { get; set; }
        public int priority { get; set; }
        public string addDateTime { get; set; }
        public string placeOnInstrumentDateTime { get; set; }
        public int detReportFlag { get; set; }
        public string limsId1 { get; set; }
        public string limsId2 { get; set; }
        public string limsId3 { get; set; }
        public string desription { get; set; }
    }

    public class SampleItem
    {
        public string id { get; set; }
        public string type { get; set; }
        public string barCode { get; set; }
        public string sampleBarCode { get; set; }
        public string sampleId { get; set; }
        public string labName { get; set; }
        public string analysisProject { get; set; }
        public string analysisMethod { get; set; }
        public int analysisTimeInSecond { get; set; }
        public string testCode { get; set; }
        public string status { get; set; }
        public int priority { get; set; }
        public string addDateTime { get; set; }
        public string placeOnInstrumentDateTime { get; set; }
        public int detReportFlag { get; set; }
        public string limsId1 { get; set; }
        public string limsId2 { get; set; }
        public string limsId3 { get; set; }
        public string desription { get; set; }
    }

}
