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)); }
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)); }