Esempio n. 1
0
        public Ranking(Window owner, List <RankingDto> rankings)
        {
            Owner = owner;
            InitializeComponent();

            if (rankings.Count() == 0)
            {
                var emptyPage = new RankingDto
                {
                    Gamemode = new GamemodeDto
                    {
                        Bombs  = -1,
                        Height = -1,
                        Width  = -1,
                        Name   = "Empty"
                    },
                    Total = 0
                };

                rankings.Add(emptyPage);
            }

            Gamemodes.ItemsSource = rankings;

            var enumerator = Gamemodes.ItemsSource.GetEnumerator();

            enumerator.MoveNext();
            Gamemodes.SelectedItem = enumerator.Current;
        }
        public async Task <IHttpActionResult> GetRanking(int id)
        {
            // serve una group by
            RankingDto ranking = await(from rasc in db.Races_Scores
                                       from d in db.Drivers
                                       from t in db.Teams
                                       from r in db.Races
                                       from c in db.Countries
                                       where rasc.Id == id
                                       where rasc.ExtDriver == d.Id && (t.ExtFirstDriver == rasc.Driver.Id || t.ExtSecondDriver == rasc.Driver.Id)
                                       where rasc.ExtRace == r.Id && c.CountryCode == rasc.Race.ExtCountry
                                       select new RankingDto
            {
                Id = rasc.Id,
                DriverFirstname = rasc.Driver.Firstname,
                DriverLastname  = rasc.Driver.Lastname,
                CountryCode     = c.CountryCode,
                TeamName        = t.Name,
                Points          = rasc.Score.Points
            }).FirstOrDefaultAsync();

            if (ranking == null)
            {
                return(NotFound());
            }

            return(Ok(ranking));
        }
Esempio n. 3
0
        public async Task <IEnumerable <RankingDto> > GetRankAsync()
        {
            var connStr = DbConnection.connectionString;
            var cmdStr  = "select * from rank_table";

            List <RankingDto> teams = new List <RankingDto>();

            using (var conn = new NpgsqlConnection(connStr)) {
                using (var cmd = new NpgsqlCommand(cmdStr, conn)) {
                    await conn.OpenAsync();

                    using (NpgsqlDataReader rd = await cmd.ExecuteReaderAsync()) {
                        while (rd.Read())
                        {
                            var team = new RankingDto();
                            team.WinMatch    = Convert.ToInt32(rd["win_match"]);
                            team.DrawMatch   = rd.GetInt32("draw_match");
                            team.LoseMatch   = rd.GetInt32("lose_match");
                            team.WinMatch    = rd.GetInt32("win_match");
                            team.TeamName    = rd["team_name"].ToString();
                            team.TeamImage   = rd["team_image"].ToString();
                            team.GoalFor     = rd.GetInt32("goal_for");
                            team.GoalAgainst = rd.GetInt32("goal_againt");
                            team.MatchPlayed = rd.GetInt32("played");
                            team.Point       = rd.GetInt32("point");
                            teams.Add(team);
                        }
                    }
                }
            }
            return(teams);
        }
Esempio n. 4
0
        internal virtual int AddStageAndLevelDatas(RankingDto ranking, bool untied)
        {
            int points = (100 - ranking.Rank) - 2;

            if (points < 0)
            {
                points = 0;
            }
            if (ranking.Rank == 1)
            {
                points = 100;
                RecordsCount++;
                if (untied)
                {
                    UntiedRecordsCount++;
                }
            }
            else if (ranking.Rank == 2)
            {
                points = 97;
            }

            Points += points;

            if (ranking.Time < UnsetTimeValueSeconds)
            {
                CumuledTime -= UnsetTimeValueSeconds - ranking.Time;
            }

            return(points);
        }
Esempio n. 5
0
 public Boolean deleteRanking(RankingDto obj)
 {
     try
     {
         IRankingSvc svc = (IRankingSvc)this.getService(typeof(IRankingSvc).Name);
         return svc.deleteRanking(obj);
     }
     catch (ServiceLoadException ex)
     {
         return false;
     }
 }
Esempio n. 6
0
 public RankingDto selectRankingById(RankingDto obj)
 {
     try
     {
         IRankingSvc svc = (IRankingSvc)this.getService(typeof(IRankingSvc).Name);
         return svc.selectRankingById(obj);
     }
     catch (ServiceLoadException ex)
     {
         return null;
     }
 }
Esempio n. 7
0
        public IResult DeleteRanking(RankingDto rankingDto)
        {
            using WordBookContext db = new();
            Ranking deletedRanking = db.Rankings.Where(r => r.RankId == rankingDto.RankId).SingleOrDefault();

            if (deletedRanking == null)
            {
                return(new ErrorResult(Messages.RankingNotFound));
            }
            db.Rankings.Remove(deletedRanking);
            db.SaveChanges();
            return(new SuccessResult(Messages.RankingDeleted));
        }
Esempio n. 8
0
        public RankingDto selectRankingById(RankingDto obj)
        {
            NewRecruiteeService.ServiceWCFClient svc = new NewRecruiteeService.ServiceWCFClient();

            try
            {
                return svc.selectRankingById(obj);
            }
            catch (Exception ex)
            {
                return null;
            }
        }
Esempio n. 9
0
 public Boolean insertRanking(RankingDto obj)
 {
     using (NewRecruiteeService.ServiceWCFClient svc = new NewRecruiteeService.ServiceWCFClient())
     {
         try
         {
             return svc.insertRanking(obj);
         }
         catch (Exception ex)
         {
             return false;
         }
     }
 }
Esempio n. 10
0
        public void Ranking()
        {
            var achievements = new List <AchievementDto>();
            var gamemode     = new GamemodeDto();
            var total        = 10;

            var game = new RankingDto()
            {
                Achievements = achievements, Gamemode = gamemode, Total = total
            };

            Assert.IsTrue(game.Achievements == achievements);
            Assert.IsTrue(game.Gamemode == gamemode);
            Assert.IsTrue(game.Total == total);
        }
Esempio n. 11
0
        public IResult UpdateRanking(RankingDto rankingDto)
        {
            using WordBookContext db = new();
            Ranking updatedRanking = db.Rankings.Where(r => r.RankId == rankingDto.RankId).SingleOrDefault();

            if (updatedRanking == null)
            {
                return(new ErrorResult(Messages.RankingNotFound));
            }
            updatedRanking.UserId     = rankingDto.UserId;
            updatedRanking.RankTypeId = rankingDto.RankTypeId;
            updatedRanking.Score      = rankingDto.Score;
            updatedRanking.UpdatedAt  = System.DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
            db.SaveChanges();
            return(new SuccessResult(Messages.RankingUpdated));
        }
Esempio n. 12
0
        public IResult AddRanking(RankingDto rankingDto)
        {
            using WordBookContext db = new();
            if (db.Rankings.Any(r => r.RankTypeId == rankingDto.RankTypeId))
            {
                return(new ErrorResult(Messages.RankingAlreadyExists));
            }
            Ranking addedRanking = new()
            {
                RankId     = 0,
                UserId     = rankingDto.UserId,
                RankTypeId = rankingDto.RankTypeId,
                Score      = rankingDto.Score,
                UpdatedAt  = System.DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString()
            };

            db.Rankings.Add(addedRanking);
            db.SaveChanges();
            return(new SuccessResult(Messages.RankingAdded));
        }
Esempio n. 13
0
        public List <RankingDto> GetRanking(IEnumerable <Gamemode> dtos, int max)
        {
            var achievements = _liteDatabase.GetCollection <AchievementRow>(_settings.AchievementsTable);
            var gamemodes    = _liteDatabase.GetCollection <GamemodeRow>(_settings.GamemodesTable);
            var pages        = new List <RankingDto>();

            foreach (var dto in dtos)
            {
                var gamemodeId = gamemodes.Query()
                                 .Where(gamemode => gamemode.Bombs == dto.Bombs &&
                                        gamemode.Height == dto.Height &&
                                        gamemode.Name == dto.Name &&
                                        gamemode.Width == dto.Width)
                                 .Select(gamemode => gamemode.GamemodeId)
                                 .FirstOrDefault();

                if (gamemodeId == 0)
                {
                    continue;
                }

                var achievementsList = achievements.Query()
                                       .Where(achievement => achievement.GamemodeId == gamemodeId)
                                       .OrderBy(achievement => achievement.Time)
                                       .ToList();

                var page = new RankingDto
                {
                    Achievements = _mapper.Map <IEnumerable <AchievementDto> >(achievementsList.Take(max)),
                    Gamemode     = _mapper.Map <GamemodeDto>(dto),
                    Total        = achievementsList.Count
                };

                pages.Add(page);
            }

            return(pages);
        }
Esempio n. 14
0
 /// <inheritdoc />
 public async Task InsertRankingEntryAsync(RankingDto ranking)
 {
     using (IDbConnection connection = _connectionProvider.TheEliteConnection)
     {
         await connection
         .QueryAsync(
             ToPsName(_insertRankingEntryPsName),
             new
         {
             @ranking_type_id   = ranking.RankingTypeId,
             @stage_id          = (long)ranking.Stage,
             @level_id          = (long)ranking.Level,
             @player_id         = ranking.PlayerId,
             @time              = ranking.Time,
             @date              = ranking.Date,
             @rank              = ranking.Rank,
             @entry_date        = ranking.EntryDate,
             @is_simulated_date = ranking.IsSimulatedDate ? 1 : 0
         },
             commandType : CommandType.StoredProcedure)
         .ConfigureAwait(false);
     }
 }
Esempio n. 15
0
        public Boolean deleteRanking(RankingDto obj)
        {
            using (NewRecruiteeService.ServiceWCFClient svc = new NewRecruiteeService.ServiceWCFClient())
            {
                try
                {
                    RankingDto rec = svc.selectRankingById(obj);

                    if (rec != null)
                    {
                        return svc.deleteRanking(obj);
                    }
                    else
                    {
                        return false;
                    }
                }
                catch (Exception ex)
                {
                    return false;
                }
            }
        }
Esempio n. 16
0
 public RankingDto selectRankingById(String RankingId)
 {
     RankingManager mgr = new RankingManager();
     RankingDto obj = new RankingDto();
     obj.RankingId = RankingId;
     return mgr.selectRankingById(obj);
 }
Esempio n. 17
0
        // Gets ranking entries for a stage and level
        private async Task <List <RankingDto> > GetStageLevelRankingAsync(
            RankingRequest request,
            Stage stage,
            Level level)
        {
            var entries = await GetStageLevelEntriesAsync(request, stage, level)
                          .ConfigureAwait(false);

            // Groups and sorts by date
            var entriesDateGroup = new SortedList <DateTime, List <EntryDto> >(
                entries
                .GroupBy(e => e.Date.Value.Date)
                .ToDictionary(
                    eGroup => eGroup.Key,
                    eGroup => eGroup.ToList()));

            var rankingsToInsert = new List <RankingDto>();

            // For the current date + previous days
            // Gets the min time entry for each player
            // Then orders by entry time overall (ascending)
            var selectedEntries = entriesDateGroup
                                  .Where(kvp => kvp.Key <= request.RankingDate)
                                  .SelectMany(kvp => kvp.Value)
                                  .GroupBy(e => e.PlayerId)
                                  .Select(eGroup => eGroup.First(e => e.Time == eGroup.Min(et => et.Time)))
                                  .OrderBy(e => e.Time)
                                  .ThenBy(e => e.Date.Value)
                                  .ToList();

            var  pos         = 1;
            var  posAgg      = 1;
            long?currentTime = null;

            foreach (var entry in selectedEntries)
            {
                if (!currentTime.HasValue)
                {
                    currentTime = entry.Time;
                }
                else if (currentTime == entry.Time)
                {
                    posAgg++;
                }
                else
                {
                    pos        += posAgg;
                    posAgg      = 1;
                    currentTime = entry.Time;
                }

                var ranking = new RankingDto
                {
                    Date            = request.RankingDate,
                    Level           = entry.Level,
                    PlayerId        = entry.PlayerId,
                    Rank            = pos,
                    Stage           = entry.Stage,
                    Time            = entry.Time,
                    EntryDate       = entry.Date.Value,
                    IsSimulatedDate = entry.IsSimulatedDate
                };

                rankingsToInsert.Add(ranking);
            }

            return(rankingsToInsert);
        }