private async Task <ChangeTeamModel> PopulateChangeTeamModel(ChangeTeamModel model) { var userId = User.Identity.GetUserId <int>(); var userTeam = await GameReader.GetUserTeam(userId, model.GameId); model.Teams = await GameReader.GetTeams(model.GameId); model.TeamId = userTeam?.Id; return(model); }
public async Task <ActionResult> ChangeTeamModal(ChangeTeamModel model) { var userId = User.Identity.GetUserId <int>(); if (!ModelState.IsValid) { return(View(await PopulateChangeTeamModel(model))); } var result = await GameWriter.ChangeTeam(userId, model); if (!ModelState.IsWriterResultValid(result)) { return(View(await PopulateChangeTeamModel(model))); } return(CloseModalSuccess()); }
public async Task <IWriterResult> ChangeTeam(int userId, ChangeTeamModel model) { using (var context = DataContextFactory.CreateContext()) { var team = await context.Team.FirstOrDefaultAsync(x => x.Id == model.TeamId && x.GameId == model.GameId); if (team == null) { return(new WriterResult(false, $"Team not found")); } var teamMember = await context.TeamMember.FirstOrDefaultAsync(x => x.UserId == userId && x.Team.GameId == model.GameId); if (teamMember != null) { if (teamMember.TeamId == model.TeamId) { return(new WriterResult(false, $"Already member of team {teamMember.Team.Name}")); } teamMember.TeamId = team.Id; await context.SaveChangesAsync(); return(new WriterResult(true)); } context.TeamMember.Add(new Entity.TeamMember { UserId = userId, TeamId = team.Id, Timestamp = DateTime.UtcNow }); await context.SaveChangesAsync(); return(new WriterResult(true)); } }