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

namespace CarbonLib.Carbon.Models
{
    public class CarbonSummary
    {
        [JsonProperty("cropField")]
        public List<CropFieldSummary> CropField { get; set; }
    }

    public class CarbonSummaryList
    {
        [JsonProperty("cropFieldClimate")]
        public List<CropFieldSummaryList> CropFieldClimate { get; set; }
        [JsonProperty("cropField")]
        public CarbonSummary CarbonSummary { get; set; }
    }

    public class CropFieldSummary
    {
        [JsonProperty("name")]
        public string Name { get; set; }
        [JsonProperty("summary")]
        public List<YearSummary> Summary { get; set; }
    }

    public class CropFieldSummaryList
    {
        [JsonProperty("name")]
        public string Name { get; set; }
        [JsonProperty("summary")]
        public List<YearSummaryClimate> SummaryList { get; set; }
    }

    public class YearSummary
    {
        [JsonProperty("crop")]
        public string Crop { get; set; }
        [JsonProperty("year")]
        public int Year { get; set; }
        [JsonProperty("bulk_Density")]
        public double Bulk_Density { get; set; }
        [JsonProperty("total_crop_area")]
        public double Total_crop_area { get; set; }
        [JsonProperty("balance")]
        public double Balance { get; set; }
        [JsonProperty("initial")]
        public double Initial { get; set; }
        [JsonProperty("iniCcontent")]
        public double IniCcontent { get; set; }
        [JsonProperty("oM_ini")]
        public double OM_ini { get; set; }
        [JsonProperty("oM_ini_Climate")]
        public List<double> OM_ini_Climate { get; set; }
        [JsonProperty("cO2seq")]
        public double CO2seq { get; set; }
        [JsonProperty("soC_CarbonCompost")]
        public double SOC_CarbonCompost { get; set; }
        [JsonProperty("soC_CarbonGreenManure")]
        public double SOC_CarbonGreenManure { get; set; }
        [JsonProperty("soC_CarbonResidues")]
        public double SOC_CarbonResidues { get; set; }
        [JsonProperty("soC_CarbonManure")]
        public double SOC_CarbonManure { get; set; }
        [JsonProperty("emision")]
        public double Emision { get; set; }
    }

    public class YearSummaryClimate
    {
        [JsonProperty("crop")]
        public string Crop { get; set; }
        [JsonProperty("year")]
        public int Year { get; set; }
        [JsonProperty("bulk_Density")]
        public List<double> Bulk_Density { get; set; }
        [JsonProperty("total_crop_area")]
        public double Total_crop_area { get; set; }
        [JsonProperty("balance")]
        public List<double> Balance { get; set; }
        [JsonProperty("initial")]
        public List<double> Initial { get; set; }
        [JsonProperty("iniCcontent")]
        public List<double> IniCcontent { get; set; }
        [JsonProperty("oM_ini")]
        public List<double> OM_ini { get; set; }
        [JsonProperty("cO2seq")]
        public List<double> CO2seq { get; set; }
        [JsonProperty("soC_CarbonCompost")]
        public List<double> SOC_CarbonCompost { get; set; }
        [JsonProperty("soC_CarbonGreenManure")]
        public List<double> SOC_CarbonGreenManure { get; set; }
        [JsonProperty("soC_CarbonResidues")]
        public List<double> SOC_CarbonResidues { get; set; }
        [JsonProperty("soC_CarbonManure")]
        public List<double> SOC_CarbonManure { get; set; }
        [JsonProperty("emision")]
        public List<double> Emision { get; set; }
    }


    public class FarmYearSummary
    {
        [JsonProperty("year")]
        public int Year { get; set; }
        [JsonProperty("total_crop_area")]
        public double Total_crop_area { get; set; }
        [JsonProperty("balance")]
        public double Balance { get; set; }
        [JsonProperty("initial")]
        public double Initial { get; set; }
        [JsonProperty("iniCcontent")]
        public double IniCcontent { get; set; }
        [JsonProperty("oM_ini")]
        public double OM_ini { get; set; }
        [JsonProperty("cO2seq")]
        public double CO2seq { get; set; }
        [JsonProperty("cO2seq_total")]
        public double CO2seq_total { get; set; }
        [JsonProperty("soC_CarbonCompost")]
        public double SOC_CarbonCompost { get; set; }
        [JsonProperty("soC_CarbonGreenManure")]
        public double SOC_CarbonGreenManure { get; set; }
        [JsonProperty("soC_CarbonResidues")]
        public double SOC_CarbonResidues { get; set; }
        [JsonProperty("soC_CarbonManure")]
        public double SOC_CarbonManure { get; set; }
        [JsonProperty("emision")]
        public double Emision { get; set; }
    }
}
