public ActionResult LeaderBoards(UserLeaderBoardViewModel model)
        {
            try
            {
                ViewBag.PostAction  = "LeaderBoardsList";
                ViewBag.SearchModel = model;
                var request = new FilteredModel <User>();
                var offset  = (model.ThisPageIndex - 1) * model.ThisPageSize;

                var result = _mapper.Map <IList <UserLeaderBoardViewModel> >(_userLeaderBoardService.GetTotalPoints(_mapper.Map <UserLeaderBoard>(model), out long totalCount, model.PageOrderBy, model.PageOrder, offset, model.ThisPageSize));
                ViewBag.OnePageOfEntries = new StaticPagedList <UserLeaderBoardViewModel>(result, model.ThisPageIndex, model.ThisPageSize, (int)totalCount);
            }
            catch (Exception ex)
            {
                _logger.Error(ex);
                if (ex.InnerException != null && ex.InnerException.Source.Equals(GeneralMessages.ExceptionSource))
                {
                    ModelState.AddModelError(string.Empty, ex.Message);
                }
                else
                {
                    ModelState.AddModelError(string.Empty, GeneralMessages.UnexpectedError);
                }
            }
            return(View());
        }
Esempio n. 2
0
        public async Task <LeaderBoardViewModel> GetLeaderBoard(LeaderBoardRequest request)
        {
            var users       = userRepository.GetAll();
            var currentUser = Feature.CurrentUser(httpContextAccessor, userRepository);

            var result = new LeaderBoardViewModel();

            foreach (var user in users)
            {
                var userViewModel = new UserLeaderBoardViewModel()
                {
                    TotalPoint = await GetUserPoint(user.OId, request.FieldId),
                    UserAvatar = user.AvatarHash,
                    UserName   = $"{user.FirstName} {user.LastName}",
                    UserId     = user.OId
                };
                result.LeaderBoards.Add(userViewModel);
                if (userViewModel.UserId != currentUser.OId)
                {
                    continue;
                }
                var currentUserLeaderBoard = new CurrentUserLeaderBoardViewModel()
                {
                    TotalPoint = await GetUserPoint(user.OId, request.FieldId),
                    UserAvatar = user.AvatarHash,
                    UserName   = $"{user.FirstName} {user.LastName}",
                    UserId     = user.OId
                };
                result.CurrentUser = currentUserLeaderBoard;
            }

            result.LeaderBoards = result.LeaderBoards.OrderByDescending(x => x.TotalPoint).ToList();
            var iter = 1;

            foreach (var item in result.LeaderBoards)
            {
                item.Index = iter++;
                if (result.CurrentUser.UserId == item.UserId)
                {
                    result.CurrentUser.Index = item.Index;
                }
            }
            return(result);
        }
        public ActionResult LeaderBoardsList(UserLeaderBoardViewModel collection)
        {
            try
            {
                var request = new FilteredModel <UserLeaderBoardViewModel>
                {
                    PageIndex = collection.ThisPageIndex,
                    Order     = collection.PageOrder,
                    OrderBy   = collection.PageOrderBy,
                    PageSize  = collection.ThisPageSize
                };

                var offset = (request.PageIndex - 1) * request.PageSize;
                var result = _mapper.Map <List <UserLeaderBoardViewModel> >(_userLeaderBoardService.GetTotalPoints(_mapper.Map <UserLeaderBoard>(collection), out long totalCount, request.OrderBy, request.Order, offset, request.PageSize));

                if (!result.Any() && totalCount > 0 && request.PageIndex > 1)
                {
                    request.PageIndex = (int)(totalCount / request.PageSize);
                    if (totalCount % request.PageSize > 0)
                    {
                        request.PageIndex++;
                    }
                    offset = (request.PageIndex - 1) * request.PageSize;
                    result = _mapper.Map <List <UserLeaderBoardViewModel> >(_userLeaderBoardService.GetTotalPoints(_mapper.Map <UserLeaderBoard>(collection), out totalCount, request.OrderBy, request.Order, (request.PageIndex - 1) * request.PageSize, request.PageSize));
                }
                ViewBag.OnePageOfEntries = new StaticPagedList <UserLeaderBoardViewModel>(result, request.PageIndex, request.PageSize, (int)totalCount);
                ViewBag.SearchModel      = collection;
            }
            catch (Exception ex)
            {
                _logger.Error(ex);
                if (ex.InnerException != null && ex.InnerException.Source.Equals(GeneralMessages.ExceptionSource))
                {
                    ModelState.AddModelError(string.Empty, ex.Message);
                }
                else
                {
                    ModelState.AddModelError(string.Empty, GeneralMessages.UnexpectedError);
                }
            }
            return((ActionResult)PartialView("_UserLeaderBoards", ViewBag.OnePageOfEntries));
        }