Example #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GrowActivityHandler"/> class.
 /// </summary>
 /// <param name="logger">Logger implementation 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">Helper to send cards and display projects in messaging extension.</param>
 /// <param name="userState">State management object for maintaining user conversation state.</param>
 /// <param name="userDetailProvider">Provider instance to work with user data.</param>
 /// <param name="botOptions">A set of key/value application configuration properties for activity handler.</param>
 /// <param name="teamSkillStorageProvider">Team skill storage provider dependency injection.</param>
 /// <param name="projectStorageProvider">Project storage provider dependency injection.</param>
 /// <param name="projectSearchService">Search service helper to fetch projects based on filters and search criteria.</param>
 /// <param name="notificationHelper">Instance to send notifications to users.</param>
 /// <param name="teamStorageProvider">Provider for fetching information about team details from storage table.</param>
 public GrowActivityHandler(
     ILogger <GrowActivityHandler> logger,
     IStringLocalizer <Strings> localizer,
     TelemetryClient telemetryClient,
     IMessagingExtensionHelper messagingExtensionHelper,
     UserState userState,
     IUserDetailProvider userDetailProvider,
     IOptions <BotSettings> botOptions,
     ITeamSkillStorageProvider teamSkillStorageProvider,
     IProjectStorageProvider projectStorageProvider,
     IProjectSearchService projectSearchService,
     NotificationHelper notificationHelper,
     ITeamStorageProvider teamStorageProvider)
 {
     this.logger                   = logger;
     this.localizer                = localizer;
     this.telemetryClient          = telemetryClient;
     this.messagingExtensionHelper = messagingExtensionHelper;
     this.userState                = userState;
     this.userDetailProvider       = userDetailProvider;
     this.botOptions               = botOptions ?? throw new ArgumentNullException(nameof(botOptions));
     this.teamSkillStorageProvider = teamSkillStorageProvider;
     this.projectStorageProvider   = projectStorageProvider;
     this.projectSearchService     = projectSearchService;
     this.notificationHelper       = notificationHelper;
     this.teamStorageProvider      = teamStorageProvider;
 }
Example #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ProjectController"/> class.
 /// </summary>
 /// <param name="logger">Logs errors and information.</param>
 /// <param name="telemetryClient">The Application Insights telemetry client.</param>
 /// <param name="projectHelper">Helper for creating models and filtering projects as per criteria.</param>
 /// <param name="projectStorageProvider">Provides methods for add, update and delete project operations from database.</param>
 /// <param name="projectSearchService">Project search service for fetching project with search criteria and filters.</param>
 /// <param name="notificationHelper">Provides methods to send notifications to users.</param>
 public ProjectController(
     ILogger <ProjectController> logger,
     TelemetryClient telemetryClient,
     IProjectHelper projectHelper,
     IProjectStorageProvider projectStorageProvider,
     IProjectSearchService projectSearchService,
     NotificationHelper notificationHelper)
     : base(telemetryClient)
 {
     this.logger                 = logger;
     this.projectHelper          = projectHelper;
     this.projectStorageProvider = projectStorageProvider;
     this.projectSearchService   = projectSearchService;
     this.notificationHelper     = notificationHelper;
 }
Example #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ProjectSearchService"/> class.
        /// </summary>
        /// <param name="optionsAccessor">A set of key/value application configuration properties.</param>
        /// <param name="projectStorageProvider">Project storage provider dependency injection.</param>
        /// <param name="logger">Logger implementation to send logs to the logger service.</param>
        /// <param name="searchServiceClient">Search service client dependency injection.</param>
        /// <param name="searchIndexClient">Search index client dependency injection.</param>
        /// <param name="projectHelper">Helper for creating models and filtering projects as per criteria.</param>
        public ProjectSearchService(
            IOptions <SearchServiceSetting> optionsAccessor,
            IProjectStorageProvider projectStorageProvider,
            ILogger <ProjectSearchService> logger,
            ISearchServiceClient searchServiceClient,
            ISearchIndexClient searchIndexClient,
            IProjectHelper projectHelper)
        {
            optionsAccessor = optionsAccessor ?? throw new ArgumentNullException(nameof(optionsAccessor));

            this.options = optionsAccessor.Value;
            var searchServiceValue = this.options.SearchServiceName;

            this.initializeTask         = new Lazy <Task>(() => this.InitializeAsync());
            this.projectStorageProvider = projectStorageProvider;
            this.logger = logger;
            this.searchServiceClient = searchServiceClient;
            this.searchIndexClient   = searchIndexClient;
            this.retryPolicy         = Policy.Handle <CloudException>(
                ex => (int)ex.Response.StatusCode == StatusCodes.Status409Conflict ||
                (int)ex.Response.StatusCode == StatusCodes.Status429TooManyRequests)
                                       .WaitAndRetryAsync(Backoff.LinearBackoff(TimeSpan.FromMilliseconds(2000), 2));
            this.projectHelper = projectHelper;
        }