Exemple #1
0
        public async Task <IActionResult> GetSpecificProductsAsync([FromQuery] Pagination pagination, [FromQuery] SearchSpecificProduct search)
        {
            var specificProducts = await _productService.ListSpecificProductAsync(pagination, search);

            var data = _mapper.Map <List <SpecificProductDTO> >(specificProducts);

            for (var i = 0; i < data.Count(); i += 1)
            {
                var images = data[i].Color.Images;
                data[i].Color.Images = null;
                data[i].Images       = images
                                       .Where(img => img.ProductId == data[i].ProductId)
                                       .ToList();
            }

            var listResponseDTO = new ListResponseDTO
            {
                Data        = data,
                CurrentPage = specificProducts.CurrentPage,
                PageSize    = specificProducts.PageSize,
                Count       = specificProducts.Count,
                TotalCount  = specificProducts.TotalCount,
                TotalPage   = specificProducts.TotalPages
            };

            return(Ok(listResponseDTO));
        }
Exemple #2
0
        public async Task <PagedList <SpecificProduct> > ListSpecificProductAsync(Pagination pagination, SearchSpecificProduct search)
        {
            var queryable = _context.SpecificProducts.Include(x => x.Product).AsQueryable();

            if (!String.IsNullOrEmpty(search.Id))
            {
                queryable = queryable.Where(c => c.Id == search.Id);
            }
            if (!String.IsNullOrEmpty(search.Name))
            {
                queryable = queryable.Where(c => c.Product.Name.ToLower().Trim().Contains(search.Name.ToLower().Trim()));
            }
            if (search.CategoryId != 0)
            {
                queryable = queryable.Where(c => c.Product.CategoryId == search.CategoryId);
            }
            if (search.StyleId != 0)
            {
                queryable = queryable.Where(c => c.Product.StyleId == search.StyleId);
            }
            if (search.ColorId != 0)
            {
                queryable = queryable.Where(c => c.ColorId == search.ColorId);
            }
            if (search.SizeId != 0)
            {
                queryable = queryable.Where(c => c.SizeId == search.SizeId);
            }

            var list = await queryable.ToListAsync();

            var dataList = list.GroupBy(spc =>
                                        new { spc.ProductId, spc.ColorId },
                                        (key, group) => group.First());

            return(PagedList <SpecificProduct> .ToPagedList(dataList, pagination.PageNumber, pagination.PageSize));
        }