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()); }
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)); }