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)); }
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)); }
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")); }
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")); }
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)); }
public async Task <ActionResult <string> > Insert([FromBody] MatchInputModel input) { var result = await this.matchService.Insert(input); return(Ok(result)); }
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)); }
public async Task <IActionResult> EditAsync(int id, MatchInputModel model) { var result = await this.service.EditAsync(id, model); return(this.Ok(result)); }
public async Task <IActionResult> CreateAsync(MatchInputModel model) { var result = await this.service.CreateAsync(model); return(this.Ok(result)); }