Пример #1
0
        public async Task <DataTablesStructs.ReturnedData <object> > GetAllDatatable(DataTablesStructs.SentParameters sentParameters, string search, string categoryId)
        {
            Expression <Func <Product, dynamic> > orderByPredicate = null;

            switch (sentParameters.OrderColumn)
            {
            case "0":
                orderByPredicate = (x) => x.Name;
                break;

            case "1":
                orderByPredicate = (x) => x.Description;
                break;

            case "2":
                orderByPredicate = (x) => x.Amount;
                break;

            case "3":
                orderByPredicate = (x) => x.Stock;
                break;

            case "4":
                orderByPredicate = (x) => x.Category.Name;
                break;

            default:
                orderByPredicate = (x) => x.CreateAt;
                break;
            }


            var query = _context.Products
                        .AsNoTracking();

            var recordsFiltered = await query.CountAsync();

            if (!string.IsNullOrEmpty(categoryId) && categoryId != "Todos")
            {
                query = query.Where(x => x.CategoryId == categoryId);
            }

            if (!string.IsNullOrEmpty(search))
            {
                query = query.Where(q => q.Name.ToUpper().Contains(search.ToUpper()) ||
                                    q.Description.ToUpper().Contains(search.ToUpper()));
            }

            query = query.AsQueryable();

            var data = await query
                       .OrderByCondition(sentParameters.OrderDirection, orderByPredicate)
                       .Skip(sentParameters.PagingFirstRecord)
                       .Take(sentParameters.RecordsPerDraw)
                       .Select(x => new
            {
                Id          = x.Id,
                name        = x.Name,
                img         = x.Img,
                description = x.Description,
                amount      = x.Amount,
                stock       = x.Stock,
                category    = x.Category.Name,
                createdAt   = x.CreateAt
            }).ToListAsync();

            var recordsTotal = data.Count;

            return(new DataTablesStructs.ReturnedData <object>
            {
                Data = data,
                DrawCounter = sentParameters.DrawCounter,
                RecordsFiltered = recordsFiltered,
                RecordsTotal = recordsTotal
            });
        }
Пример #2
0
 public async Task <DataTablesStructs.ReturnedData <object> > GetAllDatatable(DataTablesStructs.SentParameters sentParameters, string search, string category)
 => await _productRepository.GetAllDatatable(sentParameters, search, category);