Exemplo n.º 1
0
        public async Task <MatchViewModel> CreateAsync(MatchInputModel model)
        {
            await this.EnsureMatchIsValidAsync(model.HomeTeamId, model.AwayTeamId);

            var match = this.mapper.Map <Match>(model);

            await this.UpdateTeamStatisticsAsync(model.HomeTeamId, model.HomeGoals, model.AwayTeamId, model.AwayGoals);

            var result = await this.repo.SaveAsync(match);

            return(this.mapper.Map <MatchViewModel>(result));
        }
        public async Task <IActionResult> Create([Bind("MatchName,SessionCount,ShotsPerSession,TeamInputs")]
                                                 MatchInputModel match)
        {
            if (!User.Identity.IsAuthenticated || !User.IsInRole(Roles.PremiumUser.ToString()))
            {
                return(Redirect("~/Home"));
            }

            if (ModelState.IsValid)
            {
                var newMatch = new Match()
                {
                    MatchName       = match.MatchName,
                    SessionCount    = match.SessionCount,
                    ShotsPerSession = match.ShotsPerSession,
                    MatchStatus     = MatchStatus.Open,
                    Teams           = new List <Team>(),
                    DisagData       = new List <DisagJson>(),
                    StatisticModels = new List <StatisticModel>()
                };

                foreach (var teamInput in match.TeamInputs)
                {
                    newMatch.Teams.Add(new Team()
                    {
                        TeamName   = teamInput.TeamName,
                        TeamHashId = teamInput.TeamName.GetMd5Hash()
                    });
                }

                await _context.Matches.AddAsync(newMatch);

                await _context.SaveChangesAsync();

                var user = _userManager.GetUserAsync(HttpContext.User).Result;

                var matchIds = _identityContext.Users
                               .Include(i => i.MatchIds)
                               .Single(u => u.Id.Equals(user.Id)).MatchIds;

                matchIds.Add(new UserMatches()
                {
                    MatchId = newMatch.MatchId
                });

                await _identityContext.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }

            return(View(match));
        }
Exemplo n.º 3
0
        public async Task <string> Insert(MatchInputModel input)
        {
            var match = mapper.Map <Match>(input);

            var result = await this.Insert <Match>("Matches", match);


            var playersCollection = this.db.GetCollection <Player>("Players");

            await UpdatePlayerTitlesAfterMatch(playersCollection, input);

            return(result);
        }
        public IActionResult Create()
        {
            if (!User.Identity.IsAuthenticated || !User.IsInRole(Roles.PremiumUser.ToString()))
            {
                return(Redirect("~/Home"));
            }

            var match = new MatchInputModel();

            match.AddTeamInputs();

            return(View(match));
        }
Exemplo n.º 5
0
        public async Task <IActionResult> Create(MatchInputModel model)
        {
            var league   = this.leagueService.GetLeague(model.League);
            var homeTeam = this.teamService.GetTeam(model.HomeTeam);
            var awayTeam = this.teamService.GetTeam(model.AwayTeam);
            var match    = mapper.Map <Match>(model);

            match.HomeTeam = homeTeam;
            match.AwayTeam = awayTeam;
            match.League   = league;

            await this.matchRepository.AddAsync(match);

            await this.matchRepository.SaveChangesAsync();


            return(this.Redirect("/Admin/Matches/All"));
        }
Exemplo n.º 6
0
        public async Task <IActionResult> Edit(MatchInputModel model)
        {
            var match = this.matchRepository.All()
                        .FirstOrDefault(x => x.Id == model.Id);

            mapper.Map(model, match);

            var league   = this.leagueService.GetLeague(model.League);
            var homeTeam = this.teamService.GetTeam(model.HomeTeam);
            var awayTeam = this.teamService.GetTeam(model.AwayTeam);

            match.HomeTeam = homeTeam;
            match.AwayTeam = awayTeam;
            match.League   = league;

            await this.matchRepository.SaveChangesAsync();

            return(this.RedirectToAction("All", "Matches"));
        }
Exemplo n.º 7
0
        public async Task <MatchViewModel> EditAsync(int id, MatchInputModel model)
        {
            var match = await this.GetByIdAsync(id);

            await this.EnsureMatchIsValidAsync(model.HomeTeamId, model.AwayTeamId);

            // remove previous statistics

            await this.UpdateTeamStatisticsAsync(match.HomeTeamId, match.HomeGoals, match.AwayTeamId, match.AwayGoals, -1);

            // add new statistics

            match.HomeTeamId = model.HomeTeamId;
            match.HomeGoals  = model.HomeGoals;
            match.AwayTeamId = model.AwayTeamId;
            match.AwayGoals  = model.AwayGoals;

            await this.UpdateTeamStatisticsAsync(match.HomeTeamId, match.HomeGoals, match.AwayTeamId, match.AwayGoals);

            var result = await this.repo.SaveAsync(match);

            return(this.mapper.Map <MatchViewModel>(result));
        }
Exemplo n.º 8
0
        public async Task <ActionResult <string> > Insert([FromBody] MatchInputModel input)
        {
            var result = await this.matchService.Insert(input);

            return(Ok(result));
        }
Exemplo n.º 9
0
        private async Task UpdatePlayerTitlesAfterMatch(IMongoCollection <Player> collection, MatchInputModel input)
        {
            if (input.Phase != "Final")
            {
                return;
            }

            var winnerId = input.Sets.Count(set => set.FirstPlayerScore > set.SecondPlayerScore) >
                           input.Sets.Count(set => set.SecondPlayerScore > set.FirstPlayerScore) ?
                           input.FirstPlayerId : input.SecondPlayerId;

            var filterDef = Builders <Player> .Filter.Eq(player => player.Id, winnerId);

            var updateDef = Builders <Player> .Update.Inc(player => player.Titles, 1);

            var updateResult = await collection.UpdateManyAsync(filterDef, updateDef);
        }
 public async Task <ActionResult> DeleteTeam([Bind("TeamInputs")] MatchInputModel match)
 {
     match.DeleteTeamInputs();
     // return PartialView("TeamInputs", match);
     return(Ok());
 }
 public async Task <ActionResult> AddTeam([Bind("TeamInputs")] MatchInputModel match)
 {
     match.AddTeamInputs();
     return(PartialView("TeamInputs", match));
 }
Exemplo n.º 12
0
        public async Task <IActionResult> EditAsync(int id, MatchInputModel model)
        {
            var result = await this.service.EditAsync(id, model);

            return(this.Ok(result));
        }
Exemplo n.º 13
0
        public async Task <IActionResult> CreateAsync(MatchInputModel model)
        {
            var result = await this.service.CreateAsync(model);

            return(this.Ok(result));
        }