/// <summary> /// Initializes a new instance of the <see cref="EventGraphHelper"/> class. /// </summary> /// <param name="tokenAcquisitionHelper">Helper to get user access token for specified Graph scopes.</param> /// <param name="httpContextAccessor">HTTP context accessor for getting user claims.</param> /// <param name="localizer">The current culture's string localizer.</param> /// <param name="userGraphHelper">Graph helper for operations related user.</param> public EventGraphHelper( ITokenAcquisitionHelper tokenAcquisitionHelper, IHttpContextAccessor httpContextAccessor, IStringLocalizer <Strings> localizer, IUserGraphHelper userGraphHelper) { this.localizer = localizer; this.userGraphHelper = userGraphHelper; httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor)); var oidClaimType = "http://schemas.microsoft.com/identity/claims/objectidentifier"; var userObjectId = httpContextAccessor.HttpContext.User.Claims? .FirstOrDefault(claim => oidClaimType.Equals(claim.Type, StringComparison.OrdinalIgnoreCase))?.Value; if (!string.IsNullOrEmpty(userObjectId)) { var jwtToken = AuthenticationHeaderValue.Parse(httpContextAccessor.HttpContext.Request.Headers["Authorization"].ToString()).Parameter; this.delegatedGraphClient = GraphServiceClientFactory.GetAuthenticatedGraphClient(async() => { return(await tokenAcquisitionHelper.GetUserAccessTokenAsync(userObjectId, jwtToken)); }); this.applicationBetaGraphClient = GraphServiceClientFactory.GetAuthenticatedBetaGraphClient(async() => { return(await tokenAcquisitionHelper.GetApplicationAccessTokenAsync()); }); this.applicationGraphClient = GraphServiceClientFactory.GetAuthenticatedGraphClient(async() => { return(await tokenAcquisitionHelper.GetApplicationAccessTokenAsync()); }); } }
/// <summary> /// Initializes a new instance of the <see cref="EventWorkflowHelper"/> class. /// </summary> /// <param name="eventRepository">Provides the methods for event related operations on storage.</param> /// <param name="eventSearchService">The event search service for event table.</param> /// <param name="eventGraphHelper">Graph API helper for events.</param> /// <param name="groupGraphHelper">Graph API helper for groups.</param> /// <param name="userConfigurationRepository">Provides the methods for user configuration operations on storage.</param> /// <param name="teamConfigurationRepository">Provides the methods for LnD team configuration operations on storage.</param> /// <param name="categoryHelper">Category helper for fetching based on Ids, binding category names to events.</param> /// <param name="localizer">The current culture's string localizer.</param> /// <param name="userGraphHelper">Graph API helper for users API.</param> /// <param name="notificationHelper">The notification helper for notification activities.</param> /// <param name="botOptions">A set of key/value application configuration properties for activity settings.</param> public EventWorkflowHelper( IEventRepository eventRepository, IEventSearchService eventSearchService, IEventGraphHelper eventGraphHelper, IGroupGraphHelper groupGraphHelper, IUserConfigurationRepository userConfigurationRepository, ILnDTeamConfigurationRepository teamConfigurationRepository, ICategoryHelper categoryHelper, IStringLocalizer <Strings> localizer, IUserGraphHelper userGraphHelper, INotificationHelper notificationHelper, IOptions <BotSettings> botOptions) { this.eventRepository = eventRepository; this.eventSearchService = eventSearchService; this.eventGraphHelper = eventGraphHelper; this.groupGraphHelper = groupGraphHelper; this.userConfigurationRepository = userConfigurationRepository; this.teamConfigurationRepository = teamConfigurationRepository; this.categoryHelper = categoryHelper; this.localizer = localizer; this.userGraphHelper = userGraphHelper; this.notificationHelper = notificationHelper; this.botOptions = botOptions; }
/// <summary> /// Initializes a new instance of the <see cref="UsersController"/> class. /// </summary> /// <param name="logger">The ILogger object which logs errors and information</param> /// <param name="telemetryClient">The Application Insights telemetry client</param> /// <param name="userGraphHelper">Graph helper for users API.</param> /// <param name="groupGraphHelper">Graph API helper for fetching group related data.</param> public UsersController( ILogger <UsersController> logger, TelemetryClient telemetryClient, IUserGraphHelper userGraphHelper, IGroupGraphHelper groupGraphHelper) : base(telemetryClient) { this.logger = logger; this.userGraphHelper = userGraphHelper; this.groupGraphHelper = groupGraphHelper; }
/// <summary> /// Initializes a new instance of the <see cref="UserEventsHelper"/> class. /// </summary> /// <param name="eventRepository">Provides the methods for event related operations on storage.</param> /// <param name="eventSearchService">Search service to filter and search events.</param> /// <param name="userEventSearchService">Search service to filter and search events for end user.</param> /// <param name="userGraphHelper">Helper to use Microsoft Graph users api.</param> /// <param name="eventGraphHelper">Helper to use Microsoft Graph events api.</param> /// <param name="notificationHelper">Helper to send notifications to user and team.</param> /// <param name="categoryHelper">Helper to bind category name by Id.</param> /// <param name="lnDTeamConfigurationRepository">Team configuration repository for storing and updating team information.</param> /// <param name="botOptions">Represents a set of key/value application configuration properties for bot.</param> /// <param name="localizer">The current culture's string localizer.</param> public UserEventsHelper( IEventRepository eventRepository, IEventSearchService eventSearchService, IUserEventSearchService userEventSearchService, IUserGraphHelper userGraphHelper, IEventGraphHelper eventGraphHelper, INotificationHelper notificationHelper, ICategoryHelper categoryHelper, ILnDTeamConfigurationRepository lnDTeamConfigurationRepository, IOptions <BotSettings> botOptions, IStringLocalizer <Strings> localizer) { this.eventRepository = eventRepository; this.eventSearchService = eventSearchService; this.userEventSearchService = userEventSearchService; this.userGraphHelper = userGraphHelper; this.eventGraphHelper = eventGraphHelper; this.notificationHelper = notificationHelper; this.categoryHelper = categoryHelper; this.lnDTeamConfigurationRepository = lnDTeamConfigurationRepository; this.botOptions = botOptions; this.localizer = localizer; }