// 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;

/** The QuarterDayForecast model. */
@Fluent
public final class QuarterDayForecast {
    /*
     * Date of the forecast as example, 2019-10-27T00:00:00
     */
    @JsonProperty(value = "date")
    private OffsetDateTime dateTime;

    /*
     * Date and time of the beginning of the forecast quarter displayed in ISO 8601 format, for example,
     * 2019-10-27T19:39:57-08:00.
     */
    @JsonProperty(value = "effectiveDate")
    private OffsetDateTime effectiveDate;

    /*
     * Quarter of the day.
     */
    @JsonProperty(value = "quarter")
    private DayQuarter quarter;

    /*
     * Numeric value representing an image that displays the `iconPhrase`. Please refer to [Weather Service
     * Concepts](https://aka.ms/AzureMapsWeatherConcepts) for details.
     */
    @JsonProperty(value = "iconCode")
    private IconCode iconCode;

    /*
     * Phrase description of the icon. Displayed in specified language. For example, 'Sunny'.
     */
    @JsonProperty(value = "iconPhrase")
    private String iconPhrase;

    /*
     * Short summary phrase summary for quarter.
     */
    @JsonProperty(value = "phrase")
    private String phrase;

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

    /*
     * RealFeel™ Temperature values for the quarter.
     */
    @JsonProperty(value = "realFeelTemperature")
    private WeatherValueRange realFeelTemperature;

    /*
     * The dewpoint temperature in specified unit. The dewpoint temperature is the temperature that the air must be
     * cooled to in order to reach saturation.
     */
    @JsonProperty(value = "dewPoint")
    private WeatherUnitDetails dewPoint;

    /*
     * Relative humidity is the amount of water vapor present in air expressed as a percentage of the amount needed for
     * saturation at the same temperature.
     */
    @JsonProperty(value = "relativeHumidity")
    private Integer relativeHumidity;

    /*
     * Wind details being returned including speed and direction.
     */
    @JsonProperty(value = "wind")
    private WindDetails wind;

    /*
     * Wind gust. Wind gust is a sudden, brief increase in speed of the wind.
     */
    @JsonProperty(value = "windGust")
    private WindDetails windGust;

    /*
     * Visibility in specified unit. A measure of the distance at which an object or light can be clearly discerned.
     */
    @JsonProperty(value = "visibility")
    private WeatherUnitDetails visibility;

    /*
     * Percent representing cloud cover.
     */
    @JsonProperty(value = "cloudCover")
    private Integer cloudCover;

    /*
     * Indicates the presence or absence of precipitation. True indicates the presence of precipitation, false
     * indicates the absence of precipitation.
     */
    @JsonProperty(value = "hasPrecipitation")
    private Boolean hasPrecipitation;

    /*
     * Specifies the type of precipitation ("Rain" "Snow" "Ice" or "Mix"). If dbz is zero, precipitationType is not
     * present in the response.
     */
    @JsonProperty(value = "precipitationType")
    private PrecipitationType precipitationType;

    /*
     * Description of the intensity.
     */
    @JsonProperty(value = "precipitationIntensity")
    private String precipitationIntensity;

    /*
     * Percent representing the probability of precipitation. For example, '20'.
     */
    @JsonProperty(value = "precipitationProbability")
    private Integer precipitationProbability;

    /*
     * Percent representing the probability of a thunderstorm. For example, '10'.
     */
    @JsonProperty(value = "thunderstormProbability")
    private Integer thunderstormProbability;

    /*
     * Total liquid equivalent of precipitation during the forecast period.
     */
    @JsonProperty(value = "totalLiquid")
    private WeatherUnitDetails totalLiquid;

    /*
     * Rain
     */
    @JsonProperty(value = "rain")
    private WeatherUnitDetails rain;

    /*
     * Snow
     */
    @JsonProperty(value = "snow")
    private WeatherUnitDetails snow;

    /*
     * Ice
     */
    @JsonProperty(value = "ice")
    private WeatherUnitDetails ice;

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

    /**
     * Get the dateTime property: Date of the forecast as example, 2019-10-27T00:00:00.
     *
     * @return the dateTime value.
     */
    public OffsetDateTime getDateTime() {
        return this.dateTime;
    }

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

    /**
     * Get the quarter property: Quarter of the day.
     *
     * @return the quarter value.
     */
    public DayQuarter getQuarter() {
        return this.quarter;
    }

    /**
     * Get the iconCode property: Numeric value representing an image that displays the `iconPhrase`. Please refer to
     * [Weather Service Concepts](https://aka.ms/AzureMapsWeatherConcepts) for details.
     *
     * @return the iconCode value.
     */
    public IconCode getIconCode() {
        return this.iconCode;
    }

    /**
     * Get the iconPhrase property: Phrase description of the icon. Displayed in specified language. For example,
     * 'Sunny'.
     *
     * @return the iconPhrase value.
     */
    public String getIconPhrase() {
        return this.iconPhrase;
    }

    /**
     * Get the phrase property: Short summary phrase summary for quarter.
     *
     * @return the phrase value.
     */
    public String getPhrase() {
        return this.phrase;
    }

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

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

    /**
     * Get the dewPoint property: The dewpoint temperature in specified unit. The dewpoint temperature is the
     * temperature that the air must be cooled to in order to reach saturation.
     *
     * @return the dewPoint value.
     */
    public WeatherUnitDetails getDewPoint() {
        return this.dewPoint;
    }

    /**
     * Get the relativeHumidity property: Relative humidity is the amount of water vapor present in air expressed as a
     * percentage of the amount needed for saturation at the same temperature.
     *
     * @return the relativeHumidity value.
     */
    public Integer getRelativeHumidity() {
        return this.relativeHumidity;
    }

    /**
     * Get the wind property: Wind details being returned including speed and direction.
     *
     * @return the wind value.
     */
    public WindDetails getWind() {
        return this.wind;
    }

    /**
     * Get the windGust property: Wind gust. Wind gust is a sudden, brief increase in speed of the wind.
     *
     * @return the windGust value.
     */
    public WindDetails getWindGust() {
        return this.windGust;
    }

    /**
     * Get the visibility property: Visibility in specified unit. A measure of the distance at which an object or light
     * can be clearly discerned.
     *
     * @return the visibility value.
     */
    public WeatherUnitDetails getVisibility() {
        return this.visibility;
    }

    /**
     * Get the cloudCover property: Percent representing cloud cover.
     *
     * @return the cloudCover value.
     */
    public Integer getCloudCover() {
        return this.cloudCover;
    }

    /**
     * Get the hasPrecipitation property: Indicates the presence or absence of precipitation. True indicates the
     * presence of precipitation, false indicates the absence of precipitation.
     *
     * @return the hasPrecipitation value.
     */
    public Boolean isHasPrecipitation() {
        return this.hasPrecipitation;
    }

    /**
     * Get the precipitationType property: Specifies the type of precipitation ("Rain" "Snow" "Ice" or "Mix"). If dbz is
     * zero, precipitationType is not present in the response.
     *
     * @return the precipitationType value.
     */
    public PrecipitationType getPrecipitationType() {
        return this.precipitationType;
    }

    /**
     * Get the precipitationIntensity property: Description of the intensity.
     *
     * @return the precipitationIntensity value.
     */
    public String getPrecipitationIntensity() {
        return this.precipitationIntensity;
    }

    /**
     * Get the precipitationProbability property: Percent representing the probability of precipitation. For example,
     * '20'.
     *
     * @return the precipitationProbability value.
     */
    public Integer getPrecipitationProbability() {
        return this.precipitationProbability;
    }

    /**
     * Get the thunderstormProbability property: Percent representing the probability of a thunderstorm. For example,
     * '10'.
     *
     * @return the thunderstormProbability value.
     */
    public Integer getThunderstormProbability() {
        return this.thunderstormProbability;
    }

    /**
     * Get the totalLiquid property: Total liquid equivalent of precipitation during the forecast period.
     *
     * @return the totalLiquid value.
     */
    public WeatherUnitDetails getTotalLiquid() {
        return this.totalLiquid;
    }

    /**
     * Get the rain property: Rain.
     *
     * @return the rain value.
     */
    public WeatherUnitDetails getRain() {
        return this.rain;
    }

    /**
     * Get the snow property: Snow.
     *
     * @return the snow value.
     */
    public WeatherUnitDetails getSnow() {
        return this.snow;
    }

    /**
     * Get the ice property: Ice.
     *
     * @return the ice value.
     */
    public WeatherUnitDetails getIce() {
        return this.ice;
    }
}
