using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using SolarPower.Models.PowerStation;

namespace SolarPower.Models
{
    public class Overview
    {
        public double Today_kwh { get; set; } //今日總發電量
        public double Total_kwh { get; set; } //累計總發電量
        public double Today_irradiance { get; set; } //即時平均日照度
        public double Avg_irradiance { get; set; } //平均日照度(30天)
        public double Today_PR { get; set; } //即時平均 PR 值
        public double Avg_PR { get; set; } //平均 PR 值(30天)
        public double Today_kwhkwp { get; set; } //即時平均 kWh / kWp
        public double Avg_kwhkwp { get; set; } //平均 kWh / kWp (30天)
        public double Today_money { get; set; } //今日金額
        public double Total_money { get; set; } //今日金額
        public double Today_carbon { get; set; } //今日減碳量
        public double Total_carbon { get; set; } //累積減碳量
    }

    public class MapOverview : Overview
    {
        public List<CapacityDataTable> CapacityDataTables { get; set; }
        public List<PowerStation.PowerStation> PowerStations { get; set; }
        public int TotalPowerStationCount { get; set; }
        public double TotalCapacity { get; set; }
        public string UpdatedAt { get; set; } //畫面資料更新時間
    }

    public class CapacityDataTable
    {
        public string CityName { get; set; } //城市名稱
        public int SubPowerStationCount { get; set; } //電站數量
        public double SubTotalCapacity { get; set; } //總裝置容量
    }

    public class UseStatusCityGetPowerStation
    {
        public List<int> Cityid { get; set; } //都市
        public List<int> Status { get; set; } //狀態
        public int KwhOrder { get; set; }
        public int PrOrder { get; set; }
    }

    public class StationIds
    {
        public List<int> Ids { get; set; }
    }

    public class StationOverview : Overview
    {
        public byte IsShowMoney { get; set; } //是否顯示發電金額
        public byte SolarType { get; set; }
        public string UpdatedAt { get; set; } //畫面資料更新時間
        public string RateOfRain { get; set; }
        public string TodayWeather { get; set; }
        public double TodayWeatherTemp { get; set; }
        public string StationName { get; set; }
        public string CityName { get; set; }
    }

    public class ChartUptoDate
    {
        public PowerIrradianceChart ChartToday { get; set; }
        public PowerIrradianceChart Chart7day { get; set; }
        public PowerIrradianceChart ChartMonth { get; set; }
        public PowerIrradianceChart ChartYear { get; set; }
    }
    public class PowerIrradiance
    {
        public string Label { get; set; }
        public double PowerData { get; set; }
        public double IrradianceData { get; set; }
    }

    public class PowerIrradianceChart
    {
        public List<string> Labels { get; set; }
        public List<double> PowerDatas { get; set; }
        public List<double> IrradianceDatas { get; set; }
    }

    public class ExceptionSent
    {
        public int Id { get; set; }
        public int Status { get; set; }
        public string Range { get; set; }
        public string StartTime { get; set; } //起始日期
        public string EndTime { get; set; } //結束日期
    }
    public class ExceptionInfo
    {
        public int Id { get; set; }
        public string Site_id { get; set; }
        public string Dev_time { get; set; }
        public string NormalTime { get; set; }
        public string AlarmClassName { get; set; }
        public string ErrDevice { get; set; }
        public string ErrMsg { get; set; }
        public int Err_status { get; set; }
    }
    public class ExceptionDataTable:ExceptionInfo
    {
        public string Function { get; set; }
        public string PowerStationName { get; set; }
        public int ErrorID { get; set; }
        public string FormId { get; set; }
    }

    public class PostInverterHeatMapAnalysis
    {
        public int PowerStationId { get; set; }
        public List<int> CheckInverters { get; set; }
        public string SelectedDate { get; set; }
    }

    public class InverterHeatMap
    {
        public List<string> XAxis { get; set; } //時間
        public List<string> XAxisOnTime { get; set; } //時間(整點)
        public List<string> YAxis { get; set; } //逆變器名稱
        public Dictionary<string, List<HeatMapSeries>> Series { get; set; } //數組
    }

    public class HeatMapSeries
    {
        public int X { get; set; }
        public int Y { get; set; }
        public double Value { get; set; }
    }

    public class PostInverterkwhBarAnalysis
    {
        public int PowerStationId { get; set; }
        public byte SelectedType { get; set; }
        public string SelectedDate { get; set; }
        public byte SelectedQuaryerly { get; set; }
    }

    public class InverterkwhBar
    {
        public List<string> Labels { get; set; }
        public Dictionary<string, List<double>> Datasets { get; set; } //數組
    }
    public class HistorySent
    {
        public int GroupType { get; set; }
        public string HistoryRange { get; set; }
        public int PowerstationId { get; set; }
    }
    public class HistoryTable
    {
        public string TIMESTAMP { get; set; }
        public double KWH { get; set; }
        public double SOLARHOUR { get; set; }
        public double Irradiance { get; set; }
        public double PR { get; set; }
        public double Temp { get; set; }
        public double DiffSOLARHOUR { get; set; }
        public string TOTALTIME { get; set; }
    }

}
