public async Task <IActionResult> UpdateFavorites(ChallengesListViewModel model) { var serviceResult = await _activityService.UpdateFavoriteChallenges(model.Challenges); if (serviceResult.Status == ServiceResultStatus.Warning && !string.IsNullOrWhiteSpace(serviceResult.Message)) { ShowAlertWarning(serviceResult.Message); } int?page = null; if (model.PaginateModel.CurrentPage > 1) { page = model.PaginateModel.CurrentPage; } return(RedirectToAction(nameof(Index), new { page, model.Search, model.Program, model.Categories, model.Favorites, model.Status, Group = model.ChallengeGroup?.Stub })); }
private async Task <ChallengesListViewModel> GetChallengeList(string filterBy, string search, int page, int?filterId = null) { int take = 15; int skip = take * (page - 1); var challengeList = await _challengeService .MCGetPaginatedChallengeListAsync(skip, take, search, filterBy, filterId); foreach (var challenge in challengeList.Data) { if (!string.IsNullOrEmpty(challenge.BadgeFilename)) { challenge.BadgeFilename = _pathResolver.ResolveContentPath(challenge.BadgeFilename); } } PaginateViewModel paginateModel = new PaginateViewModel() { ItemCount = challengeList.Count, CurrentPage = page, ItemsPerPage = take }; var systemList = (await _siteService.GetSystemList()) .OrderByDescending(_ => _.Id == GetId(ClaimType.SystemId)).ThenBy(_ => _.Name); ChallengesListViewModel viewModel = new ChallengesListViewModel() { Challenges = challengeList.Data, PaginateModel = paginateModel, FilterBy = filterBy, FilterId = filterId, Search = search, CanAddChallenges = UserHasPermission(Permission.AddChallenges), CanDeleteChallenges = UserHasPermission(Permission.RemoveChallenges), CanEditChallenges = UserHasPermission(Permission.EditChallenges), SystemList = systemList }; if (!string.IsNullOrWhiteSpace(filterBy)) { if (filterBy.Equals("System", StringComparison.OrdinalIgnoreCase)) { var systemId = filterId ?? GetId(ClaimType.SystemId); viewModel.SystemName = systemList .Where(_ => _.Id == systemId).SingleOrDefault().Name; viewModel.BranchList = (await _siteService.GetBranches(systemId)) .OrderByDescending(_ => _.Id == GetId(ClaimType.BranchId)) .ThenBy(_ => _.Name); } else if (filterBy.Equals("Branch", StringComparison.OrdinalIgnoreCase)) { var branchId = filterId ?? GetId(ClaimType.BranchId); var branch = await _siteService.GetBranchByIdAsync(branchId); viewModel.BranchName = branch.Name; viewModel.SystemName = systemList .Where(_ => _.Id == branch.SystemId).SingleOrDefault().Name; viewModel.BranchList = (await _siteService.GetBranches(branch.SystemId)) .OrderByDescending(_ => _.Id == GetId(ClaimType.BranchId)) .ThenBy(_ => _.Name); } } if (viewModel.BranchList == null) { viewModel.BranchList = (await _siteService.GetBranches(GetId(ClaimType.SystemId))) .OrderByDescending(_ => _.Id == GetId(ClaimType.BranchId)) .ThenBy(_ => _.Name); } return(viewModel); }
public async Task <IActionResult> GetChallengeList(string challengeIds, string scope, string search, bool showActive = false, int page = 1) { var filter = new ChallengeFilter(page, 10) { IsActive = true, Search = search }; if (!string.IsNullOrWhiteSpace(challengeIds)) { filter.ChallengeIds = challengeIds.Split(',') .Where(_ => !string.IsNullOrWhiteSpace(_)) .Select(int.Parse) .ToList(); } switch (scope.ToLower()) { case ("system"): filter.SystemIds = new List <int> { GetId(ClaimType.SystemId) }; break; case ("branch"): filter.BranchIds = new List <int> { GetId(ClaimType.BranchId) }; break; case ("mine"): filter.UserIds = new List <int> { GetId(ClaimType.UserId) }; break; default: break; } var challengeList = await _challengeService.MCGetPaginatedChallengeListAsync(filter); var paginateModel = new PaginateViewModel { ItemCount = challengeList.Count, CurrentPage = page, ItemsPerPage = filter.Take.Value }; var viewModel = new ChallengesListViewModel { Challenges = challengeList.Data, PaginateModel = paginateModel, CanEditChallenges = UserHasPermission(Permission.EditChallenges), ShowActive = showActive }; foreach (var challenge in viewModel.Challenges) { if (!string.IsNullOrWhiteSpace(challenge.BadgeFilename)) { challenge.BadgeFilename = _pathResolver.ResolveContentPath( challenge.BadgeFilename); } } return(PartialView("_ChallengeListPartial", viewModel)); }
public async Task <IActionResult> Index(string Search, int page = 1) { int siteId = GetCurrentSiteId(); int take = 15; int skip = take * (page - 1); var challengeList = await _challengeService .GetPaginatedChallengeListAsync(skip, take, Search); PaginateViewModel paginateModel = new PaginateViewModel() { ItemCount = challengeList.Count, CurrentPage = page, ItemsPerPage = take }; if (paginateModel.MaxPage > 0 && paginateModel.CurrentPage > paginateModel.MaxPage) { return(RedirectToRoute( new { page = paginateModel.LastPage ?? 1 })); } foreach (var challenge in challengeList.Data) { if (!string.IsNullOrEmpty(challenge.BadgeFilename)) { challenge.BadgeFilename = _pathResolver.ResolveContentPath(challenge.BadgeFilename); } if (challenge.IsCompleted == true) { challenge.Status = "Completed!"; } } var siteStage = GetSiteStage(); var isActive = AuthUser.Identity.IsAuthenticated && (siteStage == SiteStage.ProgramOpen || siteStage == SiteStage.ProgramEnded); ChallengesListViewModel viewModel = new ChallengesListViewModel() { Challenges = challengeList.Data, PaginateModel = paginateModel, Search = Search, IsActive = isActive }; if (!string.IsNullOrWhiteSpace(Search)) { HttpContext.Session.SetString(SessionKey.ChallengeSearch, Search); } else { HttpContext.Session.Remove(SessionKey.ChallengeSearch); } HttpContext.Session.SetInt32(SessionKey.ChallengePage, page); return(View(viewModel)); }
private async Task <ChallengesListViewModel> GetChallengeList(string Search, int?Program, int?System, int?Branch, bool?Mine, int page = 1, bool pending = false) { BaseFilter filter = new BaseFilter(page); if (!string.IsNullOrWhiteSpace(Search)) { filter.Search = Search; } if (System.HasValue) { filter.SystemIds = new List <int>() { System.Value }; } if (Branch.HasValue) { filter.BranchIds = new List <int>() { Branch.Value }; } if (Program.HasValue) { if (Program.Value == 0) { filter.ProgramIds = new List <int?>() { null }; } else { filter.ProgramIds = new List <int?>() { Program.Value }; } } if (Mine == true) { filter.UserIds = new List <int>() { GetId(ClaimType.UserId) }; } if (pending) { filter.IsActive = false; } var challengeList = await _challengeService .MCGetPaginatedChallengeListAsync(filter); foreach (var challenge in challengeList.Data) { if (!string.IsNullOrEmpty(challenge.BadgeFilename)) { challenge.BadgeFilename = _pathResolver.ResolveContentPath(challenge.BadgeFilename); } } PaginateViewModel paginateModel = new PaginateViewModel() { ItemCount = challengeList.Count, CurrentPage = (filter.Skip.Value / filter.Take.Value) + 1, ItemsPerPage = filter.Take.Value }; var systemList = (await _siteService.GetSystemList()) .OrderByDescending(_ => _.Id == GetId(ClaimType.SystemId)).ThenBy(_ => _.Name); ChallengesListViewModel viewModel = new ChallengesListViewModel() { Challenges = challengeList.Data, PaginateModel = paginateModel, Search = filter.Search, System = System, Branch = Branch, Program = Program, Mine = Mine, CanAddChallenges = UserHasPermission(Permission.AddChallenges), CanDeleteChallenges = UserHasPermission(Permission.RemoveChallenges), CanEditChallenges = UserHasPermission(Permission.EditChallenges), SystemList = systemList, ProgramList = await _siteService.GetProgramList() }; if (Mine == true) { viewModel.BranchList = (await _siteService.GetBranches(GetId(ClaimType.SystemId))) .OrderByDescending(_ => _.Id == GetId(ClaimType.BranchId)) .ThenBy(_ => _.Name); viewModel.ActiveNav = "Mine"; if (pending && !UserHasPermission(Permission.ActivateAllChallenges)) { viewModel.SystemName = systemList .Where(_ => _.Id == GetId(ClaimType.SystemId)).SingleOrDefault().Name; } } else if (Branch.HasValue) { var branch = await _siteService.GetBranchByIdAsync(viewModel.Branch.Value); viewModel.BranchName = branch.Name; viewModel.SystemName = systemList .Where(_ => _.Id == branch.SystemId).SingleOrDefault().Name; viewModel.BranchList = (await _siteService.GetBranches(branch.SystemId)) .OrderByDescending(_ => _.Id == GetId(ClaimType.BranchId)) .ThenBy(_ => _.Name); viewModel.ActiveNav = "Branch"; } else if (System.HasValue) { viewModel.SystemName = systemList .Where(_ => _.Id == viewModel.System.Value).SingleOrDefault().Name; viewModel.BranchList = (await _siteService.GetBranches(viewModel.System.Value)) .OrderByDescending(_ => _.Id == GetId(ClaimType.BranchId)) .ThenBy(_ => _.Name); viewModel.ActiveNav = "System"; } else { viewModel.BranchList = (await _siteService.GetBranches(GetId(ClaimType.SystemId))) .OrderByDescending(_ => _.Id == GetId(ClaimType.BranchId)) .ThenBy(_ => _.Name); viewModel.ActiveNav = "All"; } if (Program.HasValue) { if (Program.Value > 0) { viewModel.ProgramName = (await _siteService.GetProgramByIdAsync(Program.Value)).Name; } else { viewModel.ProgramName = "Not Limited"; } } return(viewModel); }
public async Task <IActionResult> Index(string Search = null, int?Program = null, string Categories = null, string Group = null, bool Favorites = false, string Status = null, int page = 1, ChallengeFilter.OrderingOption ordering = ChallengeFilter.OrderingOption.MostPopular, System.Net.HttpStatusCode httpStatus = System.Net.HttpStatusCode.OK) { var filter = new ChallengeFilter(page) { Ordering = ordering }; if (!string.IsNullOrWhiteSpace(Search)) { filter.Search = Search; } if (Program.HasValue) { filter.ProgramIds = new List <int?> { Program }; } if (!string.IsNullOrWhiteSpace(Categories)) { var categoryIds = new List <int>(); foreach (var category in Categories.Split(',')) { if (int.TryParse(category, out int result)) { categoryIds.Add(result); } } filter.CategoryIds = categoryIds; } if (AuthUser.Identity.IsAuthenticated) { filter.Favorites = Favorites; if (string.IsNullOrWhiteSpace(Status) || string.Equals(Status, StatusUncompleted, StringComparison.OrdinalIgnoreCase)) { filter.IsCompleted = false; } else if (string.Equals(Status, StatusCompleted, StringComparison.OrdinalIgnoreCase)) { filter.IsCompleted = true; } } ChallengeGroup challengeGroup = null; if (!string.IsNullOrWhiteSpace(Group)) { challengeGroup = await _challengeService.GetActiveGroupByStubAsync(Group); if (challengeGroup != null) { filter.GroupId = challengeGroup.Id; } PageTitle = _sharedLocalizer[Annotations.Title.ChallengeGroup, challengeGroup.Name]; } var challengeList = await _challengeService.GetPaginatedChallengeListAsync(filter); var paginateModel = new PaginateViewModel { ItemCount = challengeList.Count, CurrentPage = page, ItemsPerPage = filter.Take.Value }; if (paginateModel.PastMaxPage) { return(RedirectToRoute( new { page = paginateModel.LastPage ?? 1 })); } foreach (var challenge in challengeList.Data) { if (!string.IsNullOrEmpty(challenge.BadgeFilename)) { challenge.BadgeFilename = _pathResolver .ResolveContentPath(challenge.BadgeFilename); } if (challenge.IsCompleted == true) { challenge.Status = _sharedLocalizer[Annotations.Interface.Completed]; } } var siteStage = GetSiteStage(); var isActive = siteStage == SiteStage.ProgramOpen || siteStage == SiteStage.ProgramEnded; var categoryList = await _categoryService.GetListAsync(true); var featuredChallengeGroups = await _challengeService .GetActiveFeaturedChallengeGroupsAsync(); var viewModel = new ChallengesListViewModel { Categories = Categories, CategoryIds = filter.CategoryIds, CategoryList = new SelectList(categoryList, "Id", "Name"), ChallengeGroup = challengeGroup, Challenges = challengeList.Data.ToList(), Favorites = Favorites, FeaturedChallengeGroups = featuredChallengeGroups, IsActive = isActive, IsLoggedIn = AuthUser.Identity.IsAuthenticated, Ordering = filter.Ordering, PaginateModel = paginateModel, Program = Program, ProgramList = new SelectList(await _siteService.GetProgramList(), "Id", "Name"), Search = Search, Status = Status }; if (!string.IsNullOrWhiteSpace(Search)) { HttpContext.Session.SetString(SessionKey.ChallengeSearch, Search); } else { HttpContext.Session.Remove(SessionKey.ChallengeSearch); } HttpContext.Session.SetInt32(SessionKey.ChallengePage, page); if (httpStatus != System.Net.HttpStatusCode.OK) { Response.StatusCode = (int)httpStatus; } return(View(nameof(Index), viewModel)); }
public async Task <IActionResult> Index(string Search, string Categories, string Group, bool Favorites = false, int page = 1) { int siteId = GetCurrentSiteId(); ChallengeFilter filter = new ChallengeFilter(page); if (!string.IsNullOrWhiteSpace(Search)) { filter.Search = Search; } if (!string.IsNullOrWhiteSpace(Categories)) { var categoryIds = new List <int>(); foreach (var category in Categories.Split(',')) { int result; if (int.TryParse(category, out result)) { categoryIds.Add(result); } } filter.CategoryIds = categoryIds; } if (Favorites == true && AuthUser.Identity.IsAuthenticated) { filter.Favorites = true; } ChallengeGroup challengeGroup = null; if (!string.IsNullOrWhiteSpace(Group)) { challengeGroup = await _challengeService.GetActiveGroupByStubAsync(Group); if (challengeGroup != null) { filter.GroupId = challengeGroup.Id; } } var challengeList = await _challengeService.GetPaginatedChallengeListAsync(filter); PaginateViewModel paginateModel = new PaginateViewModel() { ItemCount = challengeList.Count, CurrentPage = page, ItemsPerPage = filter.Take.Value }; if (paginateModel.MaxPage > 0 && paginateModel.CurrentPage > paginateModel.MaxPage) { return(RedirectToRoute( new { page = paginateModel.LastPage ?? 1 })); } foreach (var challenge in challengeList.Data) { if (!string.IsNullOrEmpty(challenge.BadgeFilename)) { challenge.BadgeFilename = _pathResolver.ResolveContentPath(challenge.BadgeFilename); } if (challenge.IsCompleted == true) { challenge.Status = "Completed!"; } } var siteStage = GetSiteStage(); var isActive = (siteStage == SiteStage.ProgramOpen || siteStage == SiteStage.ProgramEnded); var categoryList = await _categoryService.GetListAsync(true); ChallengesListViewModel viewModel = new ChallengesListViewModel() { Challenges = challengeList.Data.ToList(), ChallengeGroup = challengeGroup, PaginateModel = paginateModel, Search = Search, Categories = Categories, Favorites = Favorites, IsActive = isActive, IsLoggedIn = AuthUser.Identity.IsAuthenticated, CategoryIds = filter.CategoryIds, CategoryList = new SelectList(categoryList, "Id", "Name") }; if (!string.IsNullOrWhiteSpace(Search)) { HttpContext.Session.SetString(SessionKey.ChallengeSearch, Search); } else { HttpContext.Session.Remove(SessionKey.ChallengeSearch); } HttpContext.Session.SetInt32(SessionKey.ChallengePage, page); return(View(nameof(Index), viewModel)); }