/// <summary> /// Cancel an invitation. /// </summary> /// <param name="request">Who to uninvite.</param> /// <returns></returns> /// <returns>Lists of the outstanding and accepted invitations.</returns> public async Task <InvitationsIssued> PostUninviteAsync(InvitationRequest request) { UserInfo user = await GetUserInfoAsync(); if (!MasterEmails.Contains(user.Email)) { throw new HttpResponseException(HttpStatusCode.Forbidden); } return(await InvitationOperations.UninviteAsync(DbContext, request)); }
public async Task <InvitationsIssued> GetAsync() { UserInfo user = await GetUserInfoAsync(); if (!MasterEmails.Contains(user.Email)) { throw new HttpResponseException(HttpStatusCode.Forbidden); } return(await InvitationOperations.GetCurrentInvitations(DbContext)); }
public async Task <IActionResult> Delete(string id) { UserModel user = await userManager.GetUserAsync(HttpContext.User); Session?session = await sessionService.Get(id); if (session == null) { return(NotFound()); } if (user?.UserId == null || session.Host != user.UserId) { return(StatusCode(StatusCodes.Status403Forbidden)); } List <Task <UserModel> > getPlayersTasks = new List <Task <UserModel> >(); // ReSharper disable once ForeachCanBeConvertedToQueryUsingAnotherGetEnumerator foreach ((string playerId, _) in session.Players) { getPlayersTasks.Add(userManager.FindByIdAsync(playerId)); } Task <List <Invitation> > getInvitationsTask = invitationService.GetMany(session.Invitations); List <Task> savingTasks = new List <Task>(); user.RemoveSession(session.Id); Task.WaitAll(getPlayersTasks.ToArray()); foreach (Task <UserModel> playersTask in getPlayersTasks) { UserModel player = await playersTask; player.RemoveSession(session.Id); savingTasks.Add(userManager.UpdateAsync(player)); } foreach (Invitation invitation in await getInvitationsTask) { user.RemoveInvitation(invitation.Id); savingTasks.Add(invitationService.Update(invitation.Id, InvitationOperations.Cancel(invitation))); } savingTasks.Add(userManager.UpdateAsync(user)); savingTasks.Add(sessionService.Remove(session.Id)); Task.WaitAll(savingTasks.ToArray()); return(NoContent()); }
// GET: Invitations public async Task <ActionResult> Index() { UserInfo user = await GetUserInfoAsync(); if (!MasterEmails.Contains(user.Email)) { return(new HttpStatusCodeResult(HttpStatusCode.Forbidden)); } var current = await InvitationOperations.GetCurrentInvitations(DbContext); var vm = new InvitationsViewModel { OutstandingInvitations = current.Outstanding, AcceptedInvitations = current.Accepted }; return(View(await SetBasicVmInfo(vm))); }