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

package com.azure.resourcemanager.devtestlabs.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;

/** Notification settings for a schedule. */
@Fluent
public final class NotificationSettings {
    /*
     * If notifications are enabled for this schedule (i.e. Enabled, Disabled).
     */
    @JsonProperty(value = "status")
    private EnableStatus status;

    /*
     * Time in minutes before event at which notification will be sent.
     */
    @JsonProperty(value = "timeInMinutes")
    private Integer timeInMinutes;

    /*
     * The webhook URL to which the notification will be sent.
     */
    @JsonProperty(value = "webhookUrl")
    private String webhookUrl;

    /*
     * The email recipient to send notifications to (can be a list of semi-colon separated email addresses).
     */
    @JsonProperty(value = "emailRecipient")
    private String emailRecipient;

    /*
     * The locale to use when sending a notification (fallback for unsupported languages is EN).
     */
    @JsonProperty(value = "notificationLocale")
    private String notificationLocale;

    /** Creates an instance of NotificationSettings class. */
    public NotificationSettings() {
    }

    /**
     * Get the status property: If notifications are enabled for this schedule (i.e. Enabled, Disabled).
     *
     * @return the status value.
     */
    public EnableStatus status() {
        return this.status;
    }

    /**
     * Set the status property: If notifications are enabled for this schedule (i.e. Enabled, Disabled).
     *
     * @param status the status value to set.
     * @return the NotificationSettings object itself.
     */
    public NotificationSettings withStatus(EnableStatus status) {
        this.status = status;
        return this;
    }

    /**
     * Get the timeInMinutes property: Time in minutes before event at which notification will be sent.
     *
     * @return the timeInMinutes value.
     */
    public Integer timeInMinutes() {
        return this.timeInMinutes;
    }

    /**
     * Set the timeInMinutes property: Time in minutes before event at which notification will be sent.
     *
     * @param timeInMinutes the timeInMinutes value to set.
     * @return the NotificationSettings object itself.
     */
    public NotificationSettings withTimeInMinutes(Integer timeInMinutes) {
        this.timeInMinutes = timeInMinutes;
        return this;
    }

    /**
     * Get the webhookUrl property: The webhook URL to which the notification will be sent.
     *
     * @return the webhookUrl value.
     */
    public String webhookUrl() {
        return this.webhookUrl;
    }

    /**
     * Set the webhookUrl property: The webhook URL to which the notification will be sent.
     *
     * @param webhookUrl the webhookUrl value to set.
     * @return the NotificationSettings object itself.
     */
    public NotificationSettings withWebhookUrl(String webhookUrl) {
        this.webhookUrl = webhookUrl;
        return this;
    }

    /**
     * Get the emailRecipient property: The email recipient to send notifications to (can be a list of semi-colon
     * separated email addresses).
     *
     * @return the emailRecipient value.
     */
    public String emailRecipient() {
        return this.emailRecipient;
    }

    /**
     * Set the emailRecipient property: The email recipient to send notifications to (can be a list of semi-colon
     * separated email addresses).
     *
     * @param emailRecipient the emailRecipient value to set.
     * @return the NotificationSettings object itself.
     */
    public NotificationSettings withEmailRecipient(String emailRecipient) {
        this.emailRecipient = emailRecipient;
        return this;
    }

    /**
     * Get the notificationLocale property: The locale to use when sending a notification (fallback for unsupported
     * languages is EN).
     *
     * @return the notificationLocale value.
     */
    public String notificationLocale() {
        return this.notificationLocale;
    }

    /**
     * Set the notificationLocale property: The locale to use when sending a notification (fallback for unsupported
     * languages is EN).
     *
     * @param notificationLocale the notificationLocale value to set.
     * @return the NotificationSettings object itself.
     */
    public NotificationSettings withNotificationLocale(String notificationLocale) {
        this.notificationLocale = notificationLocale;
        return this;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
    }
}
