public async Task <ActionResult> Delete(ProductRemoveDto removeDto) { var result = await _productService.DeleteAsync(removeDto); if (result.IsError) { return(BadRequest(result)); } return(Ok(result)); }
public async Task <Result> DeleteAsync(ProductRemoveDto removeDto) { var result = await Task.Run(() => { var result = new Result(); var exist_product = _productRepository.Get(removeDto.ProductId); if (exist_product != null) { var stockSpec = StockExistSpecification.Create(removeDto.ProductId); var exist_stock = _stockRepository.Find(stockSpec).FirstOrDefault(); if (exist_stock != null) { _stockRepository.Remove(exist_stock.Id); _stockRepository.Complete(); var stockRemovedEvent = AbstractDomainEvent <StockRemoveDto> .Create(_serviceProvider); stockRemovedEvent.Raise(exist_stock); _productRepository.Remove(removeDto.ProductId); _productRepository.Complete(); var prodRemovedEvent = AbstractDomainEvent <ProductRemoveDto> .Create(_serviceProvider); prodRemovedEvent.Raise(exist_product); } else { result.IsError = true; result.Message = "Stock not found"; result.StatuCode = 400; } } else { result.IsError = true; result.Message = "Product not found"; result.StatuCode = 400; } return(result); }); return(result); }
public async Task <Result> RemoveAsync(ProductRemoveDto productDto) { var result = await Task.Run(() => { var result = new Result(); var stock_Spec = new StockExistSpecification(productDto.CreateStock(productDto.ProductId)); var exist_stock = _stockRepository.Find(stock_Spec).FirstOrDefault(); if (exist_stock != null) { _stockRepository.Remove(exist_stock.Id); _stockRepository.Complete(); var exist_Product_Spec = new ProductExistSpecification(productDto.ProductId); var exist_Product = _productRepository.Find(exist_Product_Spec); if (exist_Product != null) { _productRepository.Remove(productDto.ProductId); _productRepository.Complete(); } else { result.IsError = true; result.Message = "Product does not exist"; result.StatuCode = 400; } } else { result.IsError = true; result.Message = "Product does not exist"; result.StatuCode = 400; } return(result); }); return(result); }