Пример #1
0
        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);
        }
Пример #2
0
        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());
        }
Пример #3
0
        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));
            }
        }