// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

// <auto-generated/>

#nullable disable

using System;
using System.Collections.Generic;
using Azure.Core;

namespace NotificationHubs.Models
{
    /// <summary> Represents an Apple template based Azure Notification Hubs registration description. </summary>
    public partial class AppleTemplateRegistrationDescription
    {
        /// <summary> Initializes a new instance of AppleTemplateRegistrationDescription. </summary>
        /// <param name="deviceToken"></param>
        /// <param name="bodyTemplate"></param>
        /// <exception cref="ArgumentNullException"> <paramref name="deviceToken"/> or <paramref name="bodyTemplate"/> is null. </exception>
        public AppleTemplateRegistrationDescription(string deviceToken, string bodyTemplate)
        {
            Argument.AssertNotNull(deviceToken, nameof(deviceToken));
            Argument.AssertNotNull(bodyTemplate, nameof(bodyTemplate));

            DeviceToken = deviceToken;
            BodyTemplate = bodyTemplate;
            ApnsHeaders = new ChangeTrackingDictionary<string, string>();
        }
        /// <summary> Initializes a new instance of AppleTemplateRegistrationDescription. </summary>
        /// <param name="deviceToken"></param>
        /// <param name="bodyTemplate"></param>
        /// <param name="templateName"></param>
        /// <param name="apnsHeaders"></param>
        /// <param name="priority"></param>
        internal AppleTemplateRegistrationDescription(string deviceToken, string bodyTemplate, string templateName, IDictionary<string, string> apnsHeaders, int? priority)
        {
            DeviceToken = deviceToken;
            BodyTemplate = bodyTemplate;
            TemplateName = templateName;
            ApnsHeaders = apnsHeaders;
            Priority = priority;
        }

        public string DeviceToken { get; set; }

        public string BodyTemplate { get; set; }

        public string TemplateName { get; set; }

        public IDictionary<string, string> ApnsHeaders { get; }

        public int? Priority { get; set; }
    }
}
