/// <summary>
 /// Initializes a new instance of the <see cref="TeamPreferenceController"/> class.
 /// </summary>
 /// <param name="logger">Used to perform logging of errors and information.</param>
 /// <param name="telemetryClient">The Application Insights telemetry client.</param>
 /// <param name="teamPreferenceStorageHelper">Helper to create model for adding team preference and filtering unique tags.</param>
 /// <param name="teamPreferenceStorageProvider">Provider having methods to add and get team preferences from database.</param>
 /// <param name="teamPostSearchService">Search service for fetching posts as per criteria.</param>
 public TeamPreferenceController(
     ILogger <TeamPreferenceController> logger,
     TelemetryClient telemetryClient,
     ITeamPreferenceStorageHelper teamPreferenceStorageHelper,
     ITeamPreferenceStorageProvider teamPreferenceStorageProvider,
     IPostSearchService teamPostSearchService)
     : base(telemetryClient)
 {
     this.logger = logger;
     this.teamPreferenceStorageHelper   = teamPreferenceStorageHelper;
     this.teamPreferenceStorageProvider = teamPreferenceStorageProvider;
     this.teamPostSearchService         = teamPostSearchService;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="SubmitIdeaActivityHandler"/> class.
 /// </summary>
 /// <param name="logger">Instance to send logs to the logger service.</param>
 /// <param name="localizer">The current cultures' string localizer.</param>
 /// <param name="telemetryClient">The Application Insights telemetry client.</param>
 /// <param name="messagingExtensionHelper">Messaging Extension helper dependency injection.</param>
 /// <param name="userState">State management object for maintaining user conversation state.</param>
 /// <param name="teamPreferenceStorageHelper">Team preference storage helper dependency injection.</param>
 /// <param name="teamPreferenceStorageProvider">Team preference storage provider dependency injection.</param>
 /// <param name="botOptions">A set of key/value application configuration properties for activity handler.</param>
 /// <param name="teamStorageProvider">Provider for fetching information about team details from storage.</param>
 public SubmitIdeaActivityHandler(
     ILogger <SubmitIdeaActivityHandler> logger,
     IStringLocalizer <Strings> localizer,
     TelemetryClient telemetryClient,
     IMessagingExtensionHelper messagingExtensionHelper,
     UserState userState,
     ITeamPreferenceStorageHelper teamPreferenceStorageHelper,
     ITeamPreferenceStorageProvider teamPreferenceStorageProvider,
     IOptions <BotSettings> botOptions,
     ITeamStorageProvider teamStorageProvider)
 {
     this.logger                        = logger;
     this.localizer                     = localizer;
     this.telemetryClient               = telemetryClient;
     this.messagingExtensionHelper      = messagingExtensionHelper;
     this.userState                     = userState;
     this.teamPreferenceStorageHelper   = teamPreferenceStorageHelper;
     this.teamPreferenceStorageProvider = teamPreferenceStorageProvider;
     this.botOptions                    = botOptions ?? throw new ArgumentNullException(nameof(botOptions));
     this.curatorTeamId                 = botOptions.Value.CuratorTeamId;
     this.teamStorageProvider           = teamStorageProvider;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="GoodReadsActivityHandler"/> class.
 /// </summary>
 /// <param name="logger">Instance to send logs to the Application Insights service.</param>
 /// <param name="localizer">The current cultures' string localizer.</param>
 /// <param name="telemetryClient">The Application Insights telemetry client.</param>
 /// <param name="options">>A set of key/value application configuration properties for activity handler.</param>
 /// <param name="messagingExtensionHelper">Messaging Extension helper dependency injection.</param>
 /// <param name="userState">State management object for maintaining user conversation state.</param>
 /// <param name="teamPreferenceStorageHelper">Team preference storage helper dependency injection.</param>
 /// <param name="teamPreferenceStorageProvider">Team preference storage provider dependency injection.</param>
 /// <param name="teamTagStorageProvider">Team tags storage provider dependency injection.</param>
 /// <param name="botOptions">A set of key/value application configuration properties for activity handler.</param>
 public GoodReadsActivityHandler(
     ILogger <GoodReadsActivityHandler> logger,
     IStringLocalizer <Strings> localizer,
     TelemetryClient telemetryClient,
     IOptions <GoodReadsActivityHandlerOptions> options,
     IMessagingExtensionHelper messagingExtensionHelper,
     UserState userState,
     ITeamPreferenceStorageHelper teamPreferenceStorageHelper,
     ITeamPreferenceStorageProvider teamPreferenceStorageProvider,
     ITeamTagStorageProvider teamTagStorageProvider,
     IOptions <BotSettings> botOptions)
 {
     this.logger                        = logger;
     this.localizer                     = localizer;
     this.telemetryClient               = telemetryClient;
     this.options                       = options ?? throw new ArgumentNullException(nameof(options));
     this.messagingExtensionHelper      = messagingExtensionHelper;
     this.userState                     = userState;
     this.teamPreferenceStorageHelper   = teamPreferenceStorageHelper;
     this.teamPreferenceStorageProvider = teamPreferenceStorageProvider;
     this.teamTagStorageProvider        = teamTagStorageProvider;
     this.botOptions                    = botOptions ?? throw new ArgumentNullException(nameof(botOptions));
 }