public async Task <IActionResult> Reject(TeamRoute teamRoute) { try { return(this.Ok(await _repository.Update(teamRoute, false))); } catch (Exception e) { return(this.Ok(TranslateError.Convert(e))); } }
/// <summary> /// Method that will Update the TeamRoute passed in the parameters to the database /// </summary> /// <param name="teamRoute">Object TeamRoute to Update</param> public async Task <ApiResponse> Update(TeamRoute teamRoute, bool validate) { try { var oldteamRoute = await _context.Teamroutes.FirstOrDefaultAsync(rt => rt.Id == teamRoute.Id); oldteamRoute.ValidationDate = teamRoute.ValidationDate; oldteamRoute.Validate = teamRoute.Validate; await _context.SaveChangesAsync(); return(new ApiResponse { Status = ApiStatus.Ok, Message = (validate) ? "Validation effectuée avec succées !" : "Reject effectué avec succées !", Response = teamRoute }); } catch (Exception e) { return(TranslateError.Convert(e)); } }
/// <summary> /// Method to Add the TeamRoute passed in the parameters to the database /// </summary> /// <param name="teamRoute">Object TeamRoute to Add</param> public void Add(TeamRoute teamRoute) { _context.Teamroutes.Add(teamRoute); _context.SaveChanges(); }
public Task <TeamRoute> GetTeamRoute(int matchId) { var tournaments = _tournament.GetMongoDbCollection("TournamentMatchId"); var tournamentMatchId = tournaments.FindAsync(Builders <Event> .Filter.Where(cn => cn.MatchId == matchId)).Result.FirstOrDefaultAsync().Result.Id; var TeamStatsRanking = _ranking.GetMatchRankings(matchId).Result.Take(16); var logPlayersPosition = _teamPlayersPosition.GetMongoDbCollection("PlayerPosition"); var matchPlayerPosition = logPlayersPosition.FindAsync(Builders <PlayerPoition> .Filter.Where(cn => cn.MatchId == tournamentMatchId)).Result .ToListAsync().Result.OrderBy(o => o.EventTimeStamp); var playerLocation = matchPlayerPosition.Join(TeamStatsRanking, mpp => mpp.TeamId, t => t.TeamId, (mpp, t) => new { mpp, t }) .OrderBy(o => o.mpp.TeamId).ThenBy(o1 => o1.mpp.Name) .Select(s => new { TeamName = s.t.TeamName, TeamRank = s.t.TeamRank, PlayerName = s.mpp.Name, Health = s.mpp.Health, s.mpp.NumAlivePlayers, s.mpp.Location, EventTimeStamp = s.mpp.EventTimeStamp.ToDateTimeFormat(), Ranking = s.mpp.Ranking, TeamId = s.mpp.TeamId, FanviewTeamId = s.t.TeamId.ToString() }); var parachuteLanding = _parachuteLanding.GetMongoDbCollection("ParachuteLanding"); var playerVehicleLeave = parachuteLanding.FindAsync(Builders <ParachuteLanding> .Filter.Where(cn => cn.MatchId == tournamentMatchId)) .Result.ToListAsync().Result.OrderByDescending(o => o.EventTimeStamp).GroupBy(g => g.Character.Name).Select(s => new { MatchId = s.Select(a => a.MatchId).ElementAtOrDefault(0), Character = s.Select(a => a.Character).ElementAtOrDefault(0), Distance = s.Select(a => a.Distance).ElementAtOrDefault(0), Common = s.Select(a => a.Common).ElementAtOrDefault(0), EventTimeStamp = s.Select(a => a.EventTimeStamp).ElementAtOrDefault(0).ToDateTimeFormat(), EventType = s.Select(a => a.EventType).ElementAtOrDefault(0) }).OrderBy(o => o.EventTimeStamp); var playerVehicleLeaveTop3Teams = playerVehicleLeave.Where(cn => TeamStatsRanking.Select(s => s.TeamId).Contains(cn.Character.TeamId)); var logPlayerKilled = _kill.GetMongoDbCollection("Kill").FindAsync(Builders <Kill> .Filter.Where(cn => cn.MatchId == tournamentMatchId)).Result.ToListAsync().Result .Join(playerVehicleLeaveTop3Teams, k => new { Name = k.Victim.Name }, t => new { Name = t.Character.Name }, (k, t) => new { k }).Distinct().OrderByDescending(o => o.k.EventTimeStamp); var longestSurvivingTeamPlayers = playerLocation.Join(playerVehicleLeaveTop3Teams, pl => new { TeamId = pl.TeamId }, plvtop3 => new { TeamId = plvtop3.Character.TeamId }, (pl, plvtop3) => new { pl, plvtop3 }) .Where(cn => cn.pl.PlayerName.Trim() == cn.plvtop3.Character.Name.Trim()) .OrderByDescending(t => t.pl.EventTimeStamp) .GroupBy(g => new { TeamId = g.pl.TeamId }) .Select(s => new{ TeamID = s.Select(a => a.pl.TeamId).ElementAtOrDefault(0), TeamName = s.Select(a => a.pl.TeamName).ElementAtOrDefault(0), TeamRank = s.Select(a => a.pl.TeamRank).ElementAtOrDefault(0), PlayerName = s.Select(a => a.pl.PlayerName).ElementAtOrDefault(0), EventTimeStamp = s.Select(a => a.plvtop3.EventTimeStamp).ElementAtOrDefault(0), TeamRoute = s.Select(a => a.pl.Location) }); var longestSurvivingLocation = playerLocation.Join(longestSurvivingTeamPlayers, pl => new { TeamId = pl.TeamId, Name = pl.PlayerName }, plvtop3 => new { TeamId = plvtop3.TeamID, Name = plvtop3.PlayerName }, (pl, plvtop3) => new { pl, plvtop3 }) .Where(cn => (cn.pl.EventTimeStamp > cn.plvtop3.EventTimeStamp)) .OrderBy(o => o.pl.EventTimeStamp).GroupBy(g => g.pl.TeamId) .Select(s => new Route() { TeamId = s.Select(a => a.pl.TeamId).ElementAtOrDefault(0), TeamName = s.Select(a => a.pl.TeamName).ElementAtOrDefault(0), TeamRank = s.Select(a => a.pl.TeamRank).ElementAtOrDefault(0), PlayerName = s.Select(a => a.pl.PlayerName).ElementAtOrDefault(0), TeamRoute = s.Select(a => a.pl.Location) }); var teamRoute = new TeamRoute(); teamRoute.MatchId = matchId; teamRoute.MapName = _matchRepository.GetMapName(tournamentMatchId).Result; var routes = new List <Route>(); foreach (var item in longestSurvivingLocation) { var locationList = new List <Location>(); foreach (var item1 in item.TeamRoute.Select(c => new { x = c.x, y = c.y, z = c.z }).Distinct()) { locationList.Add(new Location() { x = item1.x, y = item1.y, z = item1.z }); } var route = new Route(); route.TeamId = item.TeamId; route.TeamName = item.TeamName; route.TeamRank = item.TeamRank; route.PlayerName = item.PlayerName; route.TeamRoute = locationList; routes.Add(route); teamRoute.Route = routes.OrderBy(o => o.TeamRank).ToList(); ; } return(Task.FromResult(teamRoute)); }