public async Task <BLLProductDTO> GetProductAsync(int productId) { var productDto = await Uow.Products.FindDTOAsync(productId); if (productDto == null) { return(null); } return(ProductMapper.FromDAL(productDto)); }
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); }