import Accessor from "@arcgis/core/core/Accessor.js";
import { property } from "@arcgis/core/core/accessorSupport/decorators.js";
import { IWeatherCondition } from "./weather-condition";

export interface IDay {
    maxtemp_c: number;
    maxtemp_f: number;
    mintemp_c: number;
    mintemp_f: number;
    avgtemp_c: number;
    avgtemp_f: number;
    maxwind_mph: number;
    maxwind_kph: number;
    totalprecip_mm: number;
    totalprecip_in: number;
    avgvis_km: number;
    avgvis_miles: number;
    avghumidity: number;
    daily_will_it_rain: number;
    daily_chance_of_rain: number;
    daily_will_it_snow: number;
    daily_chance_of_snow: number;
    condition: IWeatherCondition;
    uv: number
}

export default class Day extends Accessor implements IDay {
    @property()
    maxtemp_c: number;

    @property()
    maxtemp_f: number;

    @property()
    mintemp_c: number;

    @property()
    mintemp_f: number;

    @property()
    avgtemp_c: number;

    @property()
    avgtemp_f: number;

    @property()
    maxwind_mph: number;

    @property()
    maxwind_kph: number;

    @property()
    totalprecip_mm: number;

    @property()
    totalprecip_in: number;

    @property()
    avgvis_km: number;

    @property()
    avgvis_miles: number;

    @property()
    avghumidity: number;

    @property()
    daily_will_it_rain: number;

    @property()
    daily_chance_of_rain: number;

    @property()
    daily_will_it_snow: number;

    @property()
    daily_chance_of_snow: number;

    @property()
    condition: IWeatherCondition;

    @property()
    uv: number;


    constructor(params: IDay) {
        super();
        this.maxtemp_c = params.maxtemp_c;
        this.maxtemp_f = params.maxtemp_f;
        this.mintemp_c = params.mintemp_c;
        this.mintemp_f = params.mintemp_f;
        this.avgtemp_c = params.avgtemp_c;
        this.avgtemp_f = params.avgtemp_f;
        this.maxwind_mph = params.maxwind_mph;
        this.maxwind_kph = params.maxwind_kph;
        this.totalprecip_mm = params.totalprecip_mm;
        this.totalprecip_in = params.totalprecip_in;
        this.avgvis_km = params.avgvis_km;
        this.avgvis_miles = params.avgvis_miles;
        this.avghumidity = params.avghumidity;
        this.daily_will_it_rain = params.daily_will_it_rain;
        this.daily_chance_of_rain = params.daily_chance_of_rain;
        this.daily_will_it_snow = params.daily_will_it_snow;
        this.daily_chance_of_snow = params.daily_chance_of_snow;
        this.condition= params.condition;
        this.uv = params.uv;
    }

}