public async Task <IActionResult> GetProducts(GetProductsWithCategoryQuery query)
        {
            var data = await _metaDataService.GetProductVariantsFromCategory(query);

            return(Ok(data));
        }
예제 #2
0
        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,
            });
        }