Ejemplo n.º 1
0
        public async Task <IHttpActionResult> PostProduct(Product product, Guid stockGuid, int maxQuantity = 0,
                                                          int minQuantity = 0)
        {
            //verify data
            if (!ModelState.IsValid)
            {
                foreach (var v in ModelState.Values)
                {
                    foreach (var e in v.Errors)
                    {
                        if (e.Exception != null)
                        {
                            return
                                (BadRequest(
                                     "Something went wrong. Please check your form fields for disallowed or missing values."));
                        }
                    }
                }

                return(BadRequest(ModelState));
            }

            var stockController = new StocksController();

            //generate new guid for the product
            product.ProductGuid = Guid.NewGuid();

            //add product to db context
            db.Products.Add(product);

            //save changes to db
            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (ProductExists(product.ProductGuid))
                {
                    return(Conflict());
                }
                throw;
            }

            if (stockGuid != new Guid("00000000-0000-0000-0000-000000000000"))
            {
                await stockController.CreateStockItem(stockGuid, product, maxQuantity, minQuantity);
            }

            return(CreatedAtRoute("DefaultApi", new { id = product.ProductGuid }, product));
        }