using Microsoft.AspNetCore.Http;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Backend.Models
{
    public class PostDeviceFilter
    {
        public string building_tag { get; set; }
        public string device_system_tag { get; set; }
        public string device_name_tag { get; set; }
        public string device_floor_tag { get; set; }
    }

    public class PostDeviceInfoAdd
    {
        public string Building_tag { get; set; }
        public string Main_system_tag { get; set; }
        public string Sub_system_tag { get; set; }
        public string Floor_tag { get; set; }
        public List<SelcectedDeviceAdd> SelectedDevices { get; set; }
        public IFormFile SelectedDevicesFile { get; set; }
    }

    public class SelcectedDeviceAdd
    {
        public string Device_number { get; set; }
        public string Device_system_category_layer3 { get; set; }
        public string Device_disasters { get; set; }
    }

    public class PostDeviceInfoEdit
    {
        public string Device_guid { get; set; }
        public string Full_name { get; set; }
        public string Device_coordinate_x { get; set; }
        public string Device_coordinate_y { get; set; }
        public List<string> Device_disasters { get; set; }
        public string Device_ip { get; set; }
        public string Device_port { get; set; }
    }

    public class PostDeviceCoordinate
    {
        public string Device_guid { get; set; }
        public string Device_node_guid { get; set; }
        public string Coordinate { get; set; }
    }

    public class Device : Actor
    {
        public string Device_guid { get; set; }
        public byte Deleted { get; set; }
        public byte Status { get; set; }
        public string Building_guid { get; set; }
        public string Building_full_name { get; set; }
        public string Main_system_guid { get; set; }
        public string Main_system_full_name { get; set; }
        public string Sub_system_guid { get; set; }
        public string Sub_system_full_name { get; set; }
        public string Floor_guid { get; set; }
        public string Floor_full_name { get; set; }
        public string Device_coordinate { get; set; }
        public string Device_full_name { get; set; }
        public string Device_number { get; set; } //設備編號
        public string Device_model { get; set; } //設備型號
        public string Device_disaster_type_text { get; set; }
        public string Device_system_category_layer3 { get; set; }
        public string Device_image { get; set; }
        public string Device_image_url { get; set; }
        public string Device_close_color { get; set; }
        public string Device_normal_color { get; set; }
        public string Device_error_color { get; set; }
        public string Device_flashing { get; set; }
        public string Device_ip { get; set; }
        public string Device_port { get; set; }
        public List<DeviceDisaster> Device_disasters { get; set; } //防災類型
        public List<DeviceNode> Device_nodes { get; set; } //設備子節點
    }

    public class DeviceDisaster
    {
        public int Id { get; set; }
        public string Device_system_type { get; set; }
        public string Device_system_value { get; set; }
    }

    public class PostDeviceNode
    {
        public string Device_node_guid { get; set; }
        public string Device_guid { get; set; }
        public string Full_name { get; set; }
        public string Device_node_coordinate_x { get; set; }
        public string Device_node_coordinate_y { get; set; }
    }
    public class DeviceNode : Actor
    {
        public string Device_node_guid { get; set; }
        public string Device_guid { get; set; }
        public string Device_node_full_name { get; set; }
        public string Device_node_coordinate { get; set; }
        public int Priority { get; set; }
    }

    public class PostDeviceKind
    {
        public string Device_kind_guid { get; set; }
        public string Device_building_tag { get; set; }
        public string Device_system_tag { get; set; }
        public string Device_floor_tag { get; set; }
        public string Device_name_tag { get; set; }
        public string Device_image { get; set; }
        public string InitDeviceName { get; set; }
        public IFormFile Device_image_file { get; set; } //設備種類圖檔
        public string Device_normal_text { get; set; }
        public string Device_normal_point_guid { get; set; }
        public string Device_normal_point_col { get; set; }
        public string Device_normal_point_value { get; set; }
        public string Device_normal_color { get; set; }
        public byte Device_normal_flashing { get; set; }
        public string Device_close_text { get; set; }
        public string Device_close_point_guid { get; set; }
        public string Device_close_point_col { get; set; }
        public string Device_close_point_value { get; set; }
        public string Device_close_color { get; set; }
        public byte Device_close_flashing { get; set; }
        public string Device_error_text { get; set; }
        public string Device_error_point_guid { get; set; }
        public string Device_error_point_col { get; set; }
        public string Device_error_point_value { get; set; }
        public string Device_error_color { get; set; }
        public byte Device_error_flashing { get; set; }
        public byte Device_error_independent { get; set; }
    }

    public class DeviceKind
    {
        public string Device_kind_guid { get; set; }
        public string Device_building_tag { get; set; }
        public string Device_system_tag { get; set; }
        public string Device_floor_tag { get; set; }
        public string Device_name_tag { get; set; }
        public string Device_image { get; set; }
        public string Device_normal_text { get; set; }
        public string Device_normal_point_guid { get; set; }
        public string Device_normal_point_name { get; set; }
        public string Device_normal_point_col { get; set; }
        public string Device_normal_point_value { get; set; }
        public string Device_normal_color { get; set; }
        public byte Device_normal_flashing { get; set; }
        public string Device_close_text { get; set; }
        public string Device_close_point_guid { get; set; }
        public string Device_close_point_name { get; set; }
        public string Device_close_point_col { get; set; }
        public string Device_close_point_value { get; set; }
        public string Device_close_color { get; set; }
        public byte Device_close_flashing { get; set; }
        public string Device_error_text { get; set; }
        public string Device_error_point_guid { get; set; }
        public string Device_error_point_name { get; set; }
        public string Device_error_point_col { get; set; }
        public string Device_error_point_value { get; set; }
        public string Device_error_color { get; set; }
        public byte Device_error_flashing { get; set; }
        public byte Device_error_independent { get; set; }
    }

    public class PointName
    {
        public string Device_normal_point_name { get; set; }
        public string Device_close_point_name { get; set; }
        public string Device_error_point_name { get; set; }
    }

    public class DeviceImportCheckTempRawData
    {
        public string Device_building_tag { get; set; }
        public string Device_system_tag { get; set; }
        public string Device_floor_tag { get; set; }
        public string Device_name_tag { get; set; }
        public string Device_serial_tag { get; set; }
        public string Device_number { get; set; }
        public string Device_system_category_layer3 { get; set; }
    }

    public class DeviceImportCheckTempFilter
    {
        public string Device_building_tag { get; set; }
        public List<ImportTempDeviceSystemTag> Device_system_tags { get; set; }
    }
    public class ImportTempDeviceSystemTag
    {
        public string Device_system_tag { get; set; }
        public List<ImportTempDeviceFloorTag> Device_floor_tags { get; set; }
    }

    public class ImportTempDeviceFloorTag
    {
        public string Device_floor_tag { get; set; }
        public List<string> Device_name_tags { get; set; }
    }

    public class DeviceImportCheckTemp : Actor
    {
        public string Device_building_tag { get; set; }
        public string Device_system_tag { get; set; }
        public string Device_floor_tag { get; set; }
        public string Device_name_tag { get; set; }
        public string Device_serial_tag { get; set; }
        public string Device_number { get; set; }
        public string Device_disasters { get; set; }
        public string Device_disaster_type_text { get; set; }
        public string Device_system_category_layer3 { get; set; }
    }

    public class DeviceMaster : Actor
    {
        public string Device_master_guid { get; set; }
        public string Device_building_tag { get; set; }
        public string Device_name_tag { get; set; }
        public string Device_master_number { get; set; }
        public string Device_master_full_name { get; set; }
        public string Device_master_icon { get; set; }
    }

    public class PostDeviceMaster
    {
        public string Device_master_guid { get; set; }
        public string Device_building_tag { get; set; }
        public string Device_name_tag { get; set; }
        public string Device_master_number { get; set; }
        public string Device_master_full_name { get; set; }
        public IFormFile Device_master_icon_file { get; set; } //設備種類圖檔
    }

    public class DeviceGroup
    {
        public int id { get; set; }
        public string device_disaster { get; set; }
        public string device_building_tag { get; set; }
        public string device_floor_tag { get; set; }
        public string device_system_category_layer2 { get; set; }
        public string device_system_category_layer3 { get; set; }
        public int device_amount { get; set; }

    }

    /// <summary>
    /// 由API方式修改設備名稱
    /// </summary>
    public class ChangeName
    {
        public string TagName { get; set; }
        public string ChangeN { get; set; }
        public byte ChooseTable { get; set; }
    }

    public class DeviceNumberPoint
    {
        public string DeviceNumber { get; set; }
        public string Point { get; set; }
        public string FullDeviceNumberPoint { get; set; }
    }
}