Exemple #1
0
        public static IEnumerable <Sale> SortSales(IEnumerable <Sale> sales, SaleSortCriteria sortCriteria)
        {
            switch (sortCriteria)
            {
            case SaleSortCriteria.Default:
                return(sales.OrderBy(sale => sale.Id));

            case SaleSortCriteria.AscendingSum:
                return(sales.OrderBy(sale => sale.Sum));

            case SaleSortCriteria.DescendingSum:
                return(sales.OrderByDescending(sale => sale.Sum));

            default:
                return(null);
            }
        }
        public async Task <ActionResult> Info(int?manager, int?customer, SaleSortCriteria criteria = SaleSortCriteria.Default, int pageNumber = 1)
        {
            IEnumerable <Sale> sales = await Task.Run(() => SaleService.Sales.ToList());


            var managerId = manager ?? 0;

            if (managerId != 0)
            {
                sales = SaleService.FilterByManager(sales, managerId);
            }

            var customerId = customer ?? 0;

            if (customerId != 0)
            {
                sales = SaleService.FilterByCustomer(sales, customerId);
            }

            sales = await Task.Run(() => SaleService.SortSales(sales, criteria));


            int pageSize = Convert.ToInt32(ConfigurationManager.AppSettings.Get("PageSize"));

            var saleViewModel = new SaleViewModel
            {
                PageInfo = new PageInfo(currentPageNumber: pageNumber, pageSize: pageSize, totalItems: sales.Count()),

                SalesPerPage = PageInfo.GetItemsPerPage(sales, pageNumber, pageSize),

                SortingFilters = new SelectList(Enum.GetValues(typeof(SaleSortCriteria)), criteria),

                Managers = await CreateManagerSelectList(managerId),

                Customers = await CreateCustomerSelectList(customerId)
            };

            return(PartialView(saleViewModel));
        }