Ejemplo n.º 1
0
        public GridResponseModel <SaleViewModel> GetGridData(GridRequestModel request, DateTime startDate, DateTime endDate)
        {
            GridResponseModel <SaleViewModel> gridData = new GridResponseModel <SaleViewModel>();

            endDate = endDate.AddDays(1);

            gridData.Count = _repository.GetAllActive(getCreatedCompanyId())
                             .Where(x => x.Created >= startDate && x.Created <= endDate).Count();

            var query = _repository.GetAllActive(getCreatedCompanyId())
                        .Where(x => x.Created >= startDate && x.Created <= endDate)
                        .Include(x => x.SalesDetails)
                        .Include(x => x.SalesDetails.Select(y => y.Product))
                        .Include(x => x.SalesDetails.Select(y => y.Product.Group))
                        .Include(x => x.SalesDetails.Select(y => y.Product.Brand))
                        .Include(x => x.Customer);

            if (!string.IsNullOrEmpty(request.Keyword))
            {
                query = query.Where(x => x.InvoiceNo.Contains(request.Keyword));
            }

            if (request.IsAscending)
            {
                switch (request.OrderBy)
                {
                case "Name": query = query.OrderBy(l => l.InvoiceNo); break;

                default: query = query.OrderBy(l => l.Created); break;
                }
            }
            else
            {
                switch (request.OrderBy)
                {
                case "Name": query = query.OrderByDescending(l => l.InvoiceNo); break;

                default: query = query.OrderByDescending(l => l.Created); break;
                }
            }


            query = query.Skip(((request.Page - 1) * request.PerPageCount)).Take(request.PerPageCount);

            List <Sale> sales = query.ToList();

            foreach (var sale in sales)
            {
                gridData.Data.Add(new SaleViewModel(sale));
            }

            return(gridData);
        }