public IActionResult CreateView() { ViewBag.TeamName = new SelectList(_context.Teams, "TeamId", "Name"); AddMatchDto newMatch = new AddMatchDto(); ViewBag.Match = newMatch; return(View()); }
public async Task <IActionResult> Create(AddMatchDto newMatch) { ServiceResponse <List <GetMatchDto> > response = await _matchService.AddMatch(newMatch); if (response.Success == false) { return(BadRequest(response)); } return(Ok(response)); }
public async Task <ServiceResponse <List <GetMatchDto> > > AddMatch(AddMatchDto newMatch) { ServiceResponse <List <GetMatchDto> > response = new ServiceResponse <List <GetMatchDto> >(); string newMatchDate = newMatch.MatchTime.ToString("MM/dd/yyyy"); if (newMatch.HostTeam.ToLower().Equals(newMatch.GuestTeam.ToLower())) { response.Success = false; response.Message = "Guest team and host team can't be the same."; } else if (DateTime.Compare(DateTime.UtcNow, newMatch.MatchTime) > 0) { response.Success = false; response.Message = "Start time of the match can't be in past."; } else if (newMatch.HostTeamPlayers.Count() < 6) { response.Success = false; response.Message = "You must pick at least 6 players from host team."; } else if (newMatch.GuestTeamPlayers.Count() < 6) { response.Success = false; response.Message = "You must pick at least 6 players from guest team."; } else if (checkTeamDates(newMatch.HostTeam, newMatchDate) || checkTeamDates(newMatch.GuestTeam, newMatchDate)) { response.Success = false; response.Message = "Teams can't have two mathes at the same day."; } else if (checkChosenPlayers(newMatch.HostTeam, newMatch.HostTeamPlayers) != null) { response.Success = false; response.Message = $"Player {checkChosenPlayers(newMatch.HostTeam, newMatch.HostTeamPlayers)} doesn't play in {newMatch.HostTeam}."; } else if (checkChosenPlayers(newMatch.GuestTeam, newMatch.GuestTeamPlayers) != null) { response.Success = false; response.Message = $"Player {checkChosenPlayers(newMatch.GuestTeam, newMatch.GuestTeamPlayers)} doesn't play in {newMatch.GuestTeam}."; } else { Match newMatchDb = new Match(); newMatchDb.HostTeam = newMatch.HostTeam; newMatchDb.GuestTeam = newMatch.GuestTeam; newMatchDb.MatchTime = newMatch.MatchTime; newMatchDb.MatchPlace = newMatch.MatchPlace; newMatchDb.Result = "0:0"; await _context.Matches.AddAsync(newMatchDb); await _context.SaveChangesAsync(); foreach (var guestTeamPlayer in newMatch.GuestTeamPlayers) { Player playerDb1 = await _context.Players.FirstOrDefaultAsync(p => p.Name.Equals(guestTeamPlayer)); playerDb1.Matches = playerDb1.Matches + 1; _context.Players.Update(playerDb1); await _context.SaveChangesAsync(); } foreach (var hostTeamPlayer in newMatch.HostTeamPlayers) { Player playerDb2 = await _context.Players.FirstOrDefaultAsync(p => p.Name.ToLower().Equals(hostTeamPlayer.ToLower())); playerDb2.Matches = playerDb2.Matches + 1; _context.Players.Update(playerDb2); await _context.SaveChangesAsync(); } response.Data = (_context.Matches.Select(a => _mapper.Map <GetMatchDto>(a))).ToList(); } return(response); }