示例#1
0
        /// <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));
        }
示例#2
0
        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());
        }
示例#4
0
        // 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)));
        }