// 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 severe weather alert issued within an affected area(s). If multiple alerts are active for the
 * same location, the alerts will be returned in order of `priority` within the API response, with the highest priority
 * alert being returned at the top of the response.
 */
@Fluent
public final class AlertDetails {
    /*
     * The name of an area which is affected by the alert. The location that was requested falls under the alert area.
     */
    @JsonProperty(value = "name")
    private String name;

    /*
     * Text summarizing the alert in the returned area.
     */
    @JsonProperty(value = "summary")
    private String description;

    /*
     * The start date and time of the alert in ISO 8601 format, for example, 2019-10-27T19:39:57-08:00. If the alert
     * crosses multiple time zones the returned time in the response is the local time to the requested coordinate
     * location.
     */
    @JsonProperty(value = "startTime")
    private OffsetDateTime startTime;

    /*
     * The end date and time of the alert in ISO 8601 format, for example, 2019-10-27T19:39:57-08:00. If the alert
     * crosses multiple time zones the returned time in the response is the local time to the requested coordinate
     * location.
     */
    @JsonProperty(value = "endTime")
    private OffsetDateTime endTime;

    /*
     * The latest status of the alert in the current area.
     */
    @JsonProperty(value = "latestStatus")
    private LatestStatus latestStatus;

    /*
     * Full details associated with the alert. Returned if `details`=True. This field is always returned in the
     * language(s) of choice by the issuing provider and Azure Maps only returns what is created by the provider.
     * Please note, some countries/regions may offer their native language and English. Language parameter won’t apply
     * to this field.
     */
    @JsonProperty(value = "alertDetails")
    private String details;

    /*
     * Language of the `alertDetails`. This field  helps to point out that the language of the `alertDetails` may
     * differ from the requested language parameter. Returned if `details`=True. Language code has been derived from
     * the ISO 639-1 Alpha-2 codes.
     */
    @JsonProperty(value = "alertDetailsLanguageCode")
    private String language;

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

    /**
     * Get the name property: The name of an area which is affected by the alert. The location that was requested falls
     * under the alert area.
     *
     * @return the name value.
     */
    public String getName() {
        return this.name;
    }

    /**
     * Get the description property: Text summarizing the alert in the returned area.
     *
     * @return the description value.
     */
    public String getDescription() {
        return this.description;
    }

    /**
     * Get the startTime property: The start date and time of the alert in ISO 8601 format, for example,
     * 2019-10-27T19:39:57-08:00. If the alert crosses multiple time zones the returned time in the response is the
     * local time to the requested coordinate location.
     *
     * @return the startTime value.
     */
    public OffsetDateTime getStartTime() {
        return this.startTime;
    }

    /**
     * Get the endTime property: The end date and time of the alert in ISO 8601 format, for example,
     * 2019-10-27T19:39:57-08:00. If the alert crosses multiple time zones the returned time in the response is the
     * local time to the requested coordinate location.
     *
     * @return the endTime value.
     */
    public OffsetDateTime getEndTime() {
        return this.endTime;
    }

    /**
     * Get the latestStatus property: The latest status of the alert in the current area.
     *
     * @return the latestStatus value.
     */
    public LatestStatus getLatestStatus() {
        return this.latestStatus;
    }

    /**
     * Get the details property: Full details associated with the alert. Returned if `details`=True. This field is
     * always returned in the language(s) of choice by the issuing provider and Azure Maps only returns what is created
     * by the provider. Please note, some countries/regions may offer their native language and English. Language
     * parameter won’t apply to this field.
     *
     * @return the details value.
     */
    public String getDetails() {
        return this.details;
    }

    /**
     * Get the language property: Language of the `alertDetails`. This field helps to point out that the language of the
     * `alertDetails` may differ from the requested language parameter. Returned if `details`=True. Language code has
     * been derived from the ISO 639-1 Alpha-2 codes.
     *
     * @return the language value.
     */
    public String getLanguage() {
        return this.language;
    }
}
