// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.maps.weather.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.time.OffsetDateTime;
import java.util.List;

/** The DailyForecast model. */
@Fluent
public final class DailyForecast {
    /*
     * Date and time of the current observation displayed in ISO 8601 format, for example, 2019-10-27T19:39:57-08:00.
     */
    @JsonProperty(value = "date")
    private OffsetDateTime dateTime;

    /*
     * Temperature values for the day.
     */
    @JsonProperty(value = "temperature")
    private WeatherValueRange temperature;

    /*
     * RealFeel™ Temperature being returned.
     */
    @JsonProperty(value = "realFeelTemperature")
    private WeatherValueRange realFeelTemperature;

    /*
     * RealFeel™ Temperature being returned. Describes what the temperature really feels like in the shade.
     */
    @JsonProperty(value = "realFeelTemperatureShade")
    private WeatherValueRange realFeelTemperatureShade;

    /*
     * Hours of sun.
     */
    @JsonProperty(value = "hoursOfSun")
    private Float hoursOfSun;

    /*
     * Summary for mean temperature of Heating Degree Day or Cooling Degree Day information
     */
    @JsonProperty(value = "degreeDaySummary")
    private DegreeDaySummary meanTemperatureDeviation;

    /*
     * Air quality
     */
    @JsonProperty(value = "airAndPollen")
    private List<AirAndPollen> airQuality;

    /*
     * Day forecast detail
     */
    @JsonProperty(value = "day")
    private DailyForecastDetail daytimeForecast;

    /*
     * Night forecast detail
     */
    @JsonProperty(value = "night")
    private DailyForecastDetail nighttimeForecast;

    /*
     * Source(s) of the forecast data.
     */
    @JsonProperty(value = "sources")
    private List<String> sources;

    /** Set default DailyForecast constructor to private */
    private DailyForecast() {}

    /**
     * Get the dateTime property: Date and time of the current observation displayed in ISO 8601 format, for example,
     * 2019-10-27T19:39:57-08:00.
     *
     * @return the dateTime value.
     */
    public OffsetDateTime getDateTime() {
        return this.dateTime;
    }

    /**
     * Get the temperature property: Temperature values for the day.
     *
     * @return the temperature value.
     */
    public WeatherValueRange getTemperature() {
        return this.temperature;
    }

    /**
     * Get the realFeelTemperature property: RealFeel™ Temperature being returned.
     *
     * @return the realFeelTemperature value.
     */
    public WeatherValueRange getRealFeelTemperature() {
        return this.realFeelTemperature;
    }

    /**
     * Get the realFeelTemperatureShade property: RealFeel™ Temperature being returned. Describes what the temperature
     * really feels like in the shade.
     *
     * @return the realFeelTemperatureShade value.
     */
    public WeatherValueRange getRealFeelTemperatureShade() {
        return this.realFeelTemperatureShade;
    }

    /**
     * Get the hoursOfSun property: Hours of sun.
     *
     * @return the hoursOfSun value.
     */
    public Float getHoursOfSun() {
        return this.hoursOfSun;
    }

    /**
     * Get the meanTemperatureDeviation property: Summary for mean temperature of Heating Degree Day or Cooling Degree
     * Day information.
     *
     * @return the meanTemperatureDeviation value.
     */
    public DegreeDaySummary getMeanTemperatureDeviation() {
        return this.meanTemperatureDeviation;
    }

    /**
     * Get the airQuality property: Air quality.
     *
     * @return the airQuality value.
     */
    public List<AirAndPollen> getAirQuality() {
        return this.airQuality;
    }

    /**
     * Get the daytimeForecast property: Day forecast detail.
     *
     * @return the daytimeForecast value.
     */
    public DailyForecastDetail getDaytimeForecast() {
        return this.daytimeForecast;
    }

    /**
     * Get the nighttimeForecast property: Night forecast detail.
     *
     * @return the nighttimeForecast value.
     */
    public DailyForecastDetail getNighttimeForecast() {
        return this.nighttimeForecast;
    }

    /**
     * Get the sources property: Source(s) of the forecast data.
     *
     * @return the sources value.
     */
    public List<String> getSources() {
        return this.sources;
    }
}
