public IHttpActionResult AddStocks(JObject jsonBody) { JObject products = (JObject)jsonBody["ProductsInStocks"]; // this variable must be present in the javascript jsonBody.Remove("ProductsInStocks"); ProductStocks productStocks = jsonBody.ToObject <ProductStocks>(); // the job card object\ JEnumerable <JToken> tokens = (JEnumerable <JToken>)products.Children <JToken>(); foreach (JToken token in tokens) { JToken productJson = token.Children().First(); ProductInProductStocks productInstance = productJson.ToObject <ProductInProductStocks>(); // get the product and update it Product product = db.Products.Find(productInstance.ProductId); if (product == null) { return(NotFound()); } product.StocksQuantity = productInstance.QuantityRecieved + product.StocksQuantity; db.Entry(product).State = EntityState.Modified; } db.SaveChanges(); return(StatusCode(HttpStatusCode.Created)); }
public IHttpActionResult AddStocks(JObject jsonBody) { JObject products = (JObject)jsonBody["ProductsInStocks"]; // this variable must be present in the javascript jsonBody.Remove("ProductsInStocks"); ProductStocks productStocks = jsonBody.ToObject <ProductStocks>(); // the job card object\ productStocks.ApplicationUserId = User.Identity.GetUserId(); db.Stocks.Add(productStocks); db.SaveChanges(); // save it to db, to get the new stock id for further processing int productStocksId = productStocks.ProductStocksId; // the foregin key to be used for the -> proudcts JEnumerable <JToken> tokens = (JEnumerable <JToken>)products.Children <JToken>(); foreach (JToken token in tokens) { JToken productJson = token.Children().First(); ProductInProductStocks productInstance = productJson.ToObject <ProductInProductStocks>(); productInstance.ProductStocksId = productStocksId; // add a products in stock entry. db.ProductsInProductStocks.Add(productInstance); // increase quantity in the products table Product product = db.Products.Find(productInstance.ProductId); product.StocksQuantity = product.StocksQuantity + productInstance.QuantityRecieved; db.Entry(product).State = EntityState.Modified; } db.SaveChanges(); return(StatusCode(HttpStatusCode.Created)); }