Ejemplo n.º 1
0
        public async Task <ActionResult <Paged <OrderSellListDto> > > GetPagedOrders(
            [FromQuery] PagingParams pagingParams, [FromQuery] SortParams sortParams,
            [FromQuery] OrderSellQuery query, string filter)
        {
            var orders = await _repository.GetPagedOrdersAsync(pagingParams, sortParams, query, filter);

            return(new Paged <OrderSellListDto>(orders));
        }
Ejemplo n.º 2
0
        public async Task <PagedList <OrderSellListDto> > GetPagedOrdersAsync(
            PagingParams pagingParams, SortParams sortParams, OrderSellQuery queryParams, string filter
            )
        {
            var source = _repository
                         .AsNoTracking()
                         .ProjectToType <OrderSellListDto> ();

            switch (sortParams.SortOrder)
            {
            case "asc":
                switch (sortParams.SortColumn)
                {
                case "orderNumber":
                    source = source.OrderBy(p => p.OrderNumber);
                    break;

                case "dateOfIssue":
                    source = source.OrderBy(p => p.DateOfIssue);
                    break;

                case "timeForPayment":
                    source = source.OrderBy(p => p.TimeForPayment);
                    break;

                case "customerName":
                    source = source.OrderBy(p => p.CustomerName);
                    break;

                case "employeeName":
                    source = source.OrderBy(p => p.EmployeeName);
                    break;

                case "rating":
                    source = source.OrderBy(p => p.Rating);
                    break;
                }
                break;

            case "desc":
                switch (sortParams.SortColumn)
                {
                case "orderNumber":
                    source = source.OrderByDescending(p => p.OrderNumber);
                    break;

                case "dateOfIssue":
                    source = source.OrderByDescending(p => p.DateOfIssue);
                    break;

                case "timeForPayment":
                    source = source.OrderByDescending(p => p.TimeForPayment);
                    break;

                case "customerName":
                    source = source.OrderByDescending(p => p.CustomerName);
                    break;

                case "employeeName":
                    source = source.OrderByDescending(p => p.EmployeeName);
                    break;

                case "rating":
                    source = source.OrderByDescending(p => p.Rating);
                    break;
                }
                break;

            default:
                source = source.OrderByDescending(c => c.DateOfIssue);
                break;
            }

            if (queryParams.CustomerId > 0)
            {
                source = source.Where(o => o.PersonId == queryParams.CustomerId);
            }

            if (queryParams.EmployeeId > 0)
            {
                source = source.Where(o => o.EmployeeId == queryParams.EmployeeId);
            }

            if (queryParams.FromDate < queryParams.ToDate)
            {
                source = source.Where(o => o.DateOfIssue >= queryParams.FromDate && o.DateOfIssue <= queryParams.ToDate);
            }

            if (!string.IsNullOrEmpty(filter))
            {
                source = source.Where(p => (p.OrderNumber + p.DateOfIssue + p.CustomerName).ToLower().Contains(filter.ToLower()));
            }

            return(await PagedList <OrderSellListDto> .CreateAsync(source, pagingParams.PageIndex, pagingParams.PageSize));
        }