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

/** Information about a daily index. */
@Fluent
public final class DailyIndex {
    /*
     * Name of the index, for example, "Construction", "Outdoor Activity", "Flight Delays".
     */
    @JsonProperty(value = "indexName")
    private String indexName;

    /*
     * Numeric ID used to identify the specific index. Please refer to [Weather Service
     * Concepts](https://aka.ms/AzureMapsWeatherConcepts) for details and to see the supported index IDs. For example,
     * the index ID can support UI visualization scenarios.
     */
    @JsonProperty(value = "indexId")
    private Integer indexId;

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

    /*
     * Index value. Ranges from 0.0 to 10.0. Please refer to [Weather Service
     * Concepts](https://aka.ms/AzureMapsWeatherConcepts) for details and to see the supported ranges.
     */
    @JsonProperty(value = "value")
    private Float value;

    /*
     * Textual description for `categoryValue` corresponding to the level that the index value falls under, for example
     * "Very Good".
     */
    @JsonProperty(value = "category")
    private String categoryDescription;

    /*
     * Level that the index value falls under, represented by an integer. This value can be 1 through 5 and should be
     * used in combination with the `ascending` flag because it can differ among indices. For example, the following
     * values apply for Mosquito Activity: Low=1, Moderate=2, High=3, Very High=4, and Extreme=5.
     */
    @JsonProperty(value = "categoryValue")
    private Integer categoryValue;

    /*
     * Describes the direction of the `value` and `categoryValue`. For example, when set to `true`, the poorest index
     * value is 0 and the best index value is 10. When set to `true`, the poorest index value is 10 and the best index
     * value is 0.
     */
    @JsonProperty(value = "ascending")
    private Boolean isAscending;

    /*
     * A textual explanation that can be used for display purposes to summarize the index value and category. For
     * example, when the index value for Flight Delays is very good, the description will be "Conditions are excellent
     * for flying!".
     */
    @JsonProperty(value = "description")
    private String description;

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

    /**
     * Get the indexName property: Name of the index, for example, "Construction", "Outdoor Activity", "Flight Delays".
     *
     * @return the indexName value.
     */
    public String getIndexName() {
        return this.indexName;
    }

    /**
     * Get the indexId property: Numeric ID used to identify the specific index. Please refer to [Weather Service
     * Concepts](https://aka.ms/AzureMapsWeatherConcepts) for details and to see the supported index IDs. For example,
     * the index ID can support UI visualization scenarios.
     *
     * @return the indexId value.
     */
    public Integer getIndexId() {
        return this.indexId;
    }

    /**
     * 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 value property: Index value. Ranges from 0.0 to 10.0. Please refer to [Weather Service
     * Concepts](https://aka.ms/AzureMapsWeatherConcepts) for details and to see the supported ranges.
     *
     * @return the value value.
     */
    public Float getValue() {
        return this.value;
    }

    /**
     * Get the categoryDescription property: Textual description for `categoryValue` corresponding to the level that the
     * index value falls under, for example "Very Good".
     *
     * @return the categoryDescription value.
     */
    public String getCategoryDescription() {
        return this.categoryDescription;
    }

    /**
     * Get the categoryValue property: Level that the index value falls under, represented by an integer. This value can
     * be 1 through 5 and should be used in combination with the `ascending` flag because it can differ among indices.
     * For example, the following values apply for Mosquito Activity: Low=1, Moderate=2, High=3, Very High=4, and
     * Extreme=5.
     *
     * @return the categoryValue value.
     */
    public Integer getCategoryValue() {
        return this.categoryValue;
    }

    /**
     * Get the isAscending property: Describes the direction of the `value` and `categoryValue`. For example, when set
     * to `true`, the poorest index value is 0 and the best index value is 10. When set to `true`, the poorest index
     * value is 10 and the best index value is 0.
     *
     * @return the isAscending value.
     */
    public Boolean isAscending() {
        return this.isAscending;
    }

    /**
     * Get the description property: A textual explanation that can be used for display purposes to summarize the index
     * value and category. For example, when the index value for Flight Delays is very good, the description will be
     * "Conditions are excellent for flying!".
     *
     * @return the description value.
     */
    public String getDescription() {
        return this.description;
    }
}
