namespace Microsoft.Graph
{
    using System;
    using System.Collections.Generic;

    /// <summary>
    /// The type GroupSettingsCollectionRequestBuilder.
    /// </summary>
    public partial class GroupSettingsCollectionRequestBuilder : BaseRequestBuilder, IGroupSettingsCollectionRequestBuilder
    {
        /// <summary>
        /// Constructs a new GroupSettingsCollectionRequestBuilder.
        /// </summary>
        /// <param name="requestUrl">The URL for the built request.</param>
        /// <param name="client">The <see cref="IBaseClient"/> for handling requests.</param>
        public GroupSettingsCollectionRequestBuilder(
            string requestUrl,
            IBaseClient client)
            : base(requestUrl, client)
        {
        }

        /// <summary>
        /// Builds the request.
        /// </summary>
        /// <returns>The built request.</returns>
        public IGroupSettingsCollectionRequest Request()
        {
            return this.Request(null);
        }

        /// <summary>
        /// Builds the request.
        /// </summary>
        /// <param name="options">The query and header options for the request.</param>
        /// <returns>The built request.</returns>
        public IGroupSettingsCollectionRequest Request(IEnumerable<Option> options)
        {
            return new GroupSettingsCollectionRequest(this.RequestUrl, this.Client, options);
        }

        /// <summary>
        /// Gets an <see cref="IGroupSettingRequestBuilder"/> for the specified GroupGroupSetting.
        /// </summary>
        /// <param name="id">The ID for the GroupGroupSetting.</param>
        /// <returns>The <see cref="IGroupSettingRequestBuilder"/>.</returns>
        public IGroupSettingRequestBuilder this[string id]
        {
            get
            {
                return new GroupSettingRequestBuilder(this.AppendSegmentToRequestUrl(id), this.Client);
            }
        }

        
    }
}
