public async Task <BulkInviteSubmission> SendBulkInvitations(BulkInviteSubmission bulkRequest) { if (!User.Identity.IsInRole(Roles.CompanyAdministrator)) { //enforcing rule: only Company Administrator can invite Members bulkRequest.MemberType = MemberType.Guest; } bulkRequest.InvitationMessage = HtmlSanitizer.SanitizeHtml(bulkRequest.InvitationMessage); bulkRequest.SubmissionDate = DateTime.UtcNow; //this call adds the batch to the DB and creates a pending item for each guest bulkRequest = await BulkInviteSubmission.AddItem(bulkRequest, User.Identity.Name); string userOid = User.Identity.GetClaim(Settings.ObjectIdentifier); //queue the request for processing var queue = new BatchQueueItem { BulkInviteSubmissionId = bulkRequest.Id, InvitingUserId = userOid, ProfileUrl = Utils.GetProfileUrl(Request.RequestUri), UserSourceHostName = Utils.GetFQDN(Request) }; StorageRepo.AddQueueItem(queue, "invitations"); return(bulkRequest); }
public InviteManager(BatchQueueItem batch) { _user = new CacheUser(batch.InvitingUserId, batch.UserSourceHostName); _profileUrl = batch.ProfileUrl; AuthenticationResult res = null; var task = Task.Run(async() => { res = await AdalUtil.AuthenticateApp(null, _user); }); task.Wait(); _accessToken = res.AccessToken; }
public HttpResponseMessage RequeueRequest(dynamic data) { string signInUserId = User.Identity.GetClaim(Settings.ObjectIdentifier); //queue the request for processing var queue = new BatchQueueItem { BulkInviteSubmissionId = data.id, InvitingUserId = signInUserId, ProfileUrl = Utils.GetProfileUrl(Request.RequestUri), UserSourceHostName = Utils.GetFQDN(Request) }; StorageRepo.AddQueueItem(queue, "invitations"); return(new HttpResponseMessage(HttpStatusCode.Accepted)); }
// This function will get triggered/executed when a new message is written // on an Azure Queue called invitations. public static void ProcessUserQueue([QueueTrigger("%queueName%")] BatchQueueItem batch, IBinder binder) { try { var mgr = new InviteManager(batch); BulkInviteResults res; var task = Task.Run(async() => { res = await mgr.BulkInvitations(batch.BulkInviteSubmissionId); }); task.Wait(); } catch (Exception ex) { Logging.WriteToAppLog(String.Format("Error processing queue '{0}'", StorageRepo.QueueName), System.Diagnostics.EventLogEntryType.Error, ex); throw; } }