public AdminPositionIndexListViewModel GetAdminPositionIndexListViewModel() { AdminPositionIndexListViewModel vm = new AdminPositionIndexListViewModel(); vm.Positions = ApplicationDbContext.Positions .Include(x => x.ParentComponent) .Include(x => x.Members) .ToList() .ConvertAll(x => new AdminPositionIndexViewModelListItem(x)); return(vm); }
/// <summary> /// Returns the Admin/PositionIndex view /// </summary> /// <remarks> /// This view lists Positions in the database with additional administrative fields. /// </remarks> /// <param name="sortOrder"> /// <para> /// Sort by: (ascend/descend) /// Position Name: [(nothing; PositionName ascend is default/name_desc)] /// Parent Component Name: [(ParentComponentName/parentName_desc)] /// </para> /// </param> /// <param name="searchString">The search string.</param> /// <para> /// As of v1.0, the searchString parameter will search Positions by Position Name or Parent Component Name. /// The passed string will be converted to lowercase, and all non-alphanumeric characters will be removed. /// </para> /// <param name="page"> /// <para> /// This controls pagination. The default value is 1. /// </para> /// </param> /// <returns>The Admin/PositionIndex <see cref="ViewResult"/></returns> public IActionResult PositionIndex(string sortOrder, string searchString, int page = 1) { AdminPositionIndexListViewModel vm = unitOfWork.Positions.GetAdminPositionIndexListViewModel(); vm.CurrentSort = sortOrder; vm.PositionNameSort = string.IsNullOrEmpty(sortOrder) ? "name_desc" : ""; vm.ParentComponentNameSort = sortOrder == "ParentComponentName" ? "parentName_desc" : "ParentComponentName"; vm.CurrentFilter = searchString; if (!string.IsNullOrEmpty(searchString)) { char[] arr = searchString.ToCharArray(); arr = Array.FindAll <char>(arr, (c => (char.IsLetterOrDigit(c) || char.IsWhiteSpace(c) || c == '-'))); string lowerString = new string(arr); lowerString = lowerString.ToLower(); vm.Positions = vm.Positions .Where(x => x.PositionName.ToLower().Contains(lowerString) || x.ParentComponentName.ToLower().Contains(lowerString)); } switch (sortOrder) { case "name_desc": vm.Positions = vm.Positions.OrderByDescending(x => x.PositionName); break; case "parentName_desc": vm.Positions = vm.Positions.OrderByDescending(x => x.ParentComponentName); break; case "ParentComponentName": vm.Positions = vm.Positions.OrderBy(x => x.ParentComponentName).ThenBy(x => x.LineupPosition); break; } vm.PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = PageSize, TotalItems = searchString == null?unitOfWork.Positions.GetAll().Count() : vm.Positions.Count() }; ViewBag.Title = "BlueDeck Admin - Positions Index"; ViewBag.Status = TempData["Status"]?.ToString() ?? ""; ViewBag.Message = TempData["Message"]?.ToString() ?? ""; vm.Positions = vm.Positions.Skip((page - 1) * PageSize).Take(PageSize); return(View(vm)); }