public async Task WhenAsync(CreateProductDto c) { var idObj = (c as ICreateProduct).ProductId; var uriParameters = new ProductUriParameters(); uriParameters.Id = idObj; var req = new ProductPutRequest(uriParameters, (CreateProductDto)c); var resp = await _ramlClient.Product.Put(req); ProductProxyUtils.ThrowOnHttpResponseError(resp); }
public async Task <ProductDTO> UpdateAsync(ProductPutRequest model, ApiDbContext apiDbContext) { try { var product = await apiDbContext.Products.FindAsync(model.Id); if (product == null) { throw new Exception($"No existe el producto {model.Name} con id {model.Id}"); } var productFound = apiDbContext.Products.FirstOrDefault(p => p.Id != model.Id && p.Code.ToUpper().Trim().Equals(model.Code.ToUpper().Trim())); if (productFound != null) { throw new Exception($"Ya existe un producto con el código {model.Code}"); } product.Product_Categories.RemoveAll(pc => !model.CategoryIdList.Contains(pc.CategoryId)); model.CategoryIdList.Where(mc => !product.Product_Categories.Select(s => s.CategoryId).ToList().Contains(mc)).ToList().ForEach(catId => { product.Product_Categories.Add(new Product_Category { ProductId = product.Id, CategoryId = catId }); }); if (product.Stock.Avaliable != model.Stock) { product.Stock.Avaliable = model.Stock; product.Stock.UpdatedDate = DateTime.Now; } product.Code = model.Code; product.Name = model.Name; product.Description = model.Description; product.IsActive = model.IsActive; product.Price = model.Price; product.Tax = model.Tax; product.Pvp = model.Pvp; await apiDbContext.SaveChangesAsync(); return(ModelToDTO(product)); } catch (Exception e) { throw new Exception(e.Message); } }
public async Task <IActionResult> Update(ProductPutRequest model) { try { if (!ModelState.IsValid) { throw new Exception("Petición de actualización inválida"); } return(Ok(await _productService.UpdateAsync(model, _apiDbContext))); } catch (Exception e) { return(StatusCode(500, e.Message)); } }