コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: AdminController.cs プロジェクト: stringly/BlueDeck
        /// <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));
        }