コード例 #1
0
        public IActionResult Index(SortingInputModel sorting, int pageId = 1)
        {
            if (sorting.OrderBy == null)
            {
                sorting = new SortingInputModel()
                {
                    OrderBy = "Date",
                };
            }

            var orderBySelector = GetOrderBySelector(sorting);
            var skip            = DefaultItemsPerPage * (pageId - 1);

            var rankingsViewModel = new RankingsViewModel()
            {
                StartRank = skip + 1,

                Ranking = this.applicationUsersService
                          .GetMany <RankingViewModel>(
                    orderBySelector: orderBySelector,
                    asc: false,
                    skip: skip,
                    take: DefaultItemsPerPage),

                Common = new CommonViewModel()
                {
                    Pagination = this.GetPaginationModel(pageId, this.applicationUsersService.Count()),
                    Sorting    = sorting,
                },
            };

            return(this.View(rankingsViewModel));
        }
コード例 #2
0
ファイル: ScoreService.cs プロジェクト: idrizovdjem/Numberama
        public RankingsViewModel GetRankings(string userId)
        {
            // get top ten scores
            var rankingModel = new RankingsViewModel();

            rankingModel.UsersRanks = this.dbContext.GameResults
                                      .OrderByDescending(gr => gr.Score)
                                      .Take(10)
                                      .Select(gr => new ScoreRankingViewModel()
            {
                Username   = gr.User.Username,
                Score      = gr.Score,
                SubmitedAt = gr.SubmitedAt,
                Position   = this.dbContext.GameResults
                             .Count(x => x.Score > gr.Score) + 1
            })
                                      .ToList();

            if (userId != null)
            {
                // check if the user is logged in and if yes, get his record
                var username = this.dbContext.Users
                               .First(u => u.Id == userId).Username;

                // check if the user is in top ten
                if (rankingModel.UsersRanks.Any(r => r.Username == username))
                {
                    // if user is in top ten, then just find the record index
                    var userModel = rankingModel.UsersRanks
                                    .First(r => r.Username == username);
                    var index = rankingModel.UsersRanks.IndexOf(userModel);
                    rankingModel.UserRankIndex = index;
                }
                else
                {
                    // if the user is not in top ten, find his best score and add it to the scores list
                    var userModel = this.dbContext.GameResults
                                    .Where(gr => gr.UserId == userId)
                                    .OrderByDescending(gr => gr.Score)
                                    .Select(gr => new ScoreRankingViewModel()
                    {
                        Score    = gr.Score,
                        Position = this.dbContext.GameResults
                                   .Count(x => x.Score > gr.Score) + 1,
                        SubmitedAt = gr.SubmitedAt,
                        Username   = username
                    })
                                    .FirstOrDefault();

                    // check if the user has any records
                    if (userModel != null)
                    {
                        rankingModel.UsersRanks.Add(userModel);
                        rankingModel.UserRankIndex = rankingModel.UsersRanks.Count - 1;
                    }
                }
            }

            return(rankingModel);
        }
コード例 #3
0
 public RankingsViewPage()
 {
     InitializeComponent();
     Items = new ObservableCollection <RankingsModel>
     {
     };
     viewModel = new RankingsViewModel();
     RankingsListGetter();
     BindingContext           = this.viewModel;
     RankingsList.ItemsSource = Items;
 }
コード例 #4
0
 public object GetToolView()
 {
     if (this.rankingsViewModel == null)
     {
         if (KanColleClient.Current.Homeport != null)
         {
             this.rankingsViewModel = new RankingsViewModel();
         }
     }
     return(new Calculator {
         DataContext = this.rankingsViewModel
     });
 }
コード例 #5
0
        public ActionResult Rankings(string sortOrder)
        {
            List <RankingsViewModel> TournamentsVW = new List <RankingsViewModel>();

            var playerList =
                db.Players.Where(p => p.StatusID == 1 && p.LeagueID == 1).Distinct();


            foreach (var player in playerList)
            {
                RankingsViewModel tvm = new RankingsViewModel();

                tvm.PlayerName    = player.PlayerName;
                tvm.OffenseRating = player.OffenseRating;

                var playerTournamentList = player.TournamentScores.ToList();

                if (playerTournamentList.Count > 0)
                {
                    tvm.Average20PointsFor =
                        player.TournamentScores.OrderByDescending(ts => ts.TournamentID)
                        .Take(20)
                        .Average(x => Convert.ToDouble(x.PointsFor));

                    tvm.Average20PointsAgainst =
                        player.TournamentScores.OrderByDescending(ts => ts.TournamentID)
                        .Take(20)
                        .Average(x => Convert.ToDouble(x.PointsAgainst));

                    tvm.Average20DefenseAgainst =
                        player.TournamentScores.OrderByDescending(ts => ts.TournamentID)
                        .Take(20)
                        .Where(ts => ts.DefenseAgainst != null)
                        .Average(x => Convert.ToDouble(x.DefenseAgainst));

                    var pf = tvm.Average20PointsFor * 580;
                    var da = 195 - tvm.Average20DefenseAgainst;
                    var pa = tvm.Average20PointsAgainst * 1.4;

                    tvm.Grade = pf / da - pa;

                    tvm.OffenseRanking35 =
                        player.TournamentScores.OrderByDescending(ts => ts.TournamentID)
                        .Take(35)
                        .Average(x => Convert.ToDecimal(x.PointsFor));

                    tvm.OffenseRanking28 =
                        player.TournamentScores.OrderByDescending(ts => ts.TournamentID)
                        .Take(28)
                        .Average(x => Convert.ToDecimal(x.PointsFor));

                    tvm.OffenseRanking14 =
                        player.TournamentScores.OrderByDescending(ts => ts.TournamentID)
                        .Take(14)
                        .Average(x => Convert.ToDecimal(x.PointsFor));

                    int?_offenseRating = 0;
                    if (player.OffenseRating.HasValue)
                    {
                        _offenseRating = player.OffenseRating;
                    }
                    //tvm.PowerRating = Convert.ToDecimal(tvm.OffenseRanking28 * 5 + _offenseRating);
                    //tvm.PowerRating = Convert.ToDouble((tvm.Average20PointsFor * 5) / tvm.Average20DefenseAgainst + tvm.OffenseRating);
                    tvm.Ladder = Convert.ToDouble((tvm.Average20PointsFor * tvm.Average20DefenseAgainst) / 20 + tvm.OffenseRating);

                    TournamentsVW.Add(tvm);
                }
            }

            ViewBag.GradeSortParam  = String.IsNullOrEmpty(sortOrder) ? "Grade" : "";
            ViewBag.LadderSortParam = sortOrder == "Ladder" ? "Ladder_desc" : "Ladder";

            switch (sortOrder)
            {
            case "Ladder_desc":
                TournamentsVW = TournamentsVW.OrderByDescending(ts => ts.Ladder).ToList();
                break;

            case "Grade":
                TournamentsVW = TournamentsVW.OrderBy(t => t.Grade).ToList();
                break;

            case "Ladder":
                TournamentsVW = TournamentsVW.OrderBy(t => t.Ladder).ToList();
                break;

            default:
                TournamentsVW = TournamentsVW.OrderByDescending(t => t.Grade).ToList();
                break;
            }

            return(View(TournamentsVW));
        }