示例#1
0
 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)));
     }
 }
示例#2
0
        /// <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));
            }
        }
示例#3
0
 /// <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();
 }
示例#4
0
        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));
        }