public async Task <IActionResult> InviteToTeam(InviteModel model)
        {
            if (!await UserIsTeamAdmin(model.TeamId))
            {
                return(BadRequest("User is not team admin..."));
            }

            ApplicationUser invitingUserEntity = await GetAuthUser();

            TeamInvite invite = await _dbContext.TeamInvites.FindAsync(invitingUserEntity.Id, model.UserId, model.TeamId);

            if (invite != null)
            {
                if (invite.State != NotificationState.NotSeen)
                {
                    invite.State = NotificationState.NotSeen;
                }
            }
            else
            {
                invite = new TeamInvite()
                {
                    InvitedUserId  = model.UserId,
                    InvitingUserId = invitingUserEntity.Id,
                    TeamId         = model.TeamId
                };
                _dbContext.TeamInvites.Add(invite);
            }
            try
            {
                await _dbContext.SaveChangesAsync();
            }
            catch (DbUpdateException e)
            {
                System.Diagnostics.Trace.TraceError($"Team invite error: ${e.Message}");
                return(BadRequest("Something went wrong..."));
            }
            List <BellumGensPushSubscription> subs = await _dbContext.BellumGensPushSubscriptions.Where(sub => sub.UserId == model.UserId).ToListAsync();

            await _notificationService.SendNotificationAsync(subs, invite);

            return(Ok(model.UserId));
        }
Пример #2
0
        public IHttpActionResult InviteToTeam(InviteModel model)
        {
            CSGOTeam team = UserIsTeamAdmin(model.teamId);

            if (team == null)
            {
                return(BadRequest("User is not team admin for " + team.TeamName));
            }

            ApplicationUser invitedUserEntity  = _dbContext.Users.Find(model.userId);
            ApplicationUser invitingUserEntity = GetAuthUser();
            TeamInvite      invite             = team.Invites.SingleOrDefault(i => i.InvitingUserId == invitingUserEntity.Id && i.InvitedUserId == invitedUserEntity.Id);

            if (invite != null)
            {
                if (invite.State != NotificationState.NotSeen)
                {
                    invite.State = NotificationState.NotSeen;
                }
            }
            else
            {
                invite = new TeamInvite()
                {
                    InvitedUser    = invitedUserEntity,
                    InvitingUserId = invitingUserEntity.Id
                };
                team.Invites.Add(invite);
            }
            try
            {
                _dbContext.SaveChanges();
            }
            catch (DbUpdateException e)
            {
                System.Diagnostics.Trace.TraceError($"Team invite error: ${e.Message}");
                return(BadRequest("Something went wrong..."));
            }
            List <BellumGensPushSubscription> subs = _dbContext.PushSubscriptions.Where(sub => sub.userId == invitedUserEntity.Id).ToList();

            NotificationsService.SendNotification(subs, invite);
            return(Ok(model.userId));
        }