public async Task <IActionResult> GetProducts(GetProductsWithCategoryQuery query) { var data = await _metaDataService.GetProductVariantsFromCategory(query); return(Ok(data)); }
public async Task <IDataResult <List <VariationsWithCategoryInfoDto> > > GetProductVariantsFromCategory(GetProductsWithCategoryQuery query) { var products = new List <Product>(); var category = await _categoryRepository.GetWithSpesificationAsync(new BaseSpesification <Category>(p => p.Name == query.CategoryName)); if (category != null) { products = await _productRepository.GetListWithSpesificationAsync(new BaseSpesification <Product>(p => p.CategoryId == category.Id)); } var list = new List <VariationsWithCategoryInfoDto>(); if (products.Count > 0) { foreach (var item in products) { var model = new VariationsWithCategoryInfoDto(); var variant = await _variationRepository.GetWithSpesificationAsync(new BaseSpesification <Variation>(p => p.ProductId == item.Id && p.IsActive == true)); model.ProductName = item.Name; model.TotalData = products.Count(); if (variant != null) { var stocks = await _stockRepository.GetListWithSpesificationAsync(new BaseSpesification <Stock>(p => p.ProductId == item.Id && p.VariationId == variant.Id)); if (stocks.Count > 0) { model.Price = stocks.FirstOrDefault().Price; list.Add(model); } else { return(new ErrorDataResult <List <VariationsWithCategoryInfoDto> > { Data = null, Success = false, Message = Messages.ProductNotExist }); } } } } else { return(new ErrorDataResult <List <VariationsWithCategoryInfoDto> > { Data = null, Success = false, Message = Messages.ProductNotExist }); } return(new SuccessDataResult <List <VariationsWithCategoryInfoDto> > { Data = list, Message = Messages.ProductListWithCategory, }); }