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)); }
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)); }