Exemplo n.º 1
0
        public async Task <BLLProductDTO> GetProductAsync(int productId)
        {
            var productDto = await Uow.Products.FindDTOAsync(productId);

            if (productDto == null)
            {
                return(null);
            }

            return(ProductMapper.FromDAL(productDto));
        }
Exemplo n.º 2
0
        public async Task <bool> EditProduct(BLLProductDTO productDTO)
        {
            var organization = await Uow.Organizations.FindWithCategoriesAsync(productDTO.OrganizationId);

            if (organization?.Categories == null || organization.Categories.Count == 0)
            {
                return(false);
            }

            var organizationCategoryIds = organization.Categories.Select(dto => dto.Id).ToList();

            foreach (var category in productDTO.Categories)
            {
                if (!organizationCategoryIds.Contains(category.Id))
                {
                    return(false);
                }
            }

            //1.Edit product entity
            var product = await Uow.Products.EditAsync(ProductMapper.FromBLL2(productDTO));

            if (product == null)
            {
                return(false);
            }

            //2. Edit product categories
            await Uow.ProductsInCategories.RemoveByProductId(product.Id);

            foreach (var category in productDTO.Categories)
            {
                await Uow.ProductsInCategories.AddAsync(product.Id, category.Id);
            }

            //3. Add price
            var priceDTO = new DALPriceDTO()
            {
                Value     = productDTO.CurrentPrice,
                ProductId = product.Id,
                ValidFrom = DateTime.Now,
                ValidTo   = DateTime.MaxValue,
            };
            await Uow.Prices.EditAsync(priceDTO);

            await Uow.SaveChangesAsync();

            return(true);
        }