public IHttpActionResult PostProduct(ProductViewModel product_view_model) { if (!ModelState.IsValid) { return BadRequest(ModelState); } Category category = db.Categories.Find(product_view_model.Category_Id); if (category==null) { return BadRequest("找不到對應的產品分類: " + product_view_model.Category_Id); } Product product = new Product { Name = product_view_model.Name, Price = product_view_model.Price, Category = category }; db.Products.Add(product); db.SaveChanges(); return CreatedAtRoute("DefaultApi", new { id = product.Id }, ToViewModel(product)); }
public IHttpActionResult PutProduct(int id, ProductViewModel product_view_model) { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (id != product_view_model.Id) { return BadRequest(); } Category category = db.Categories.Find(product_view_model.Category_Id); if (category == null) { return BadRequest("找不到對應的產品分類: " + product_view_model.Category_Id); } //把資料庫中的那筆資料讀出來 Product product_db = db.Products.Find(id); if (product_db == null) { return ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!")); } else { try { product_db.Name = product_view_model.Name; product_db.Price = product_view_model.Price; product_db.Category = category; db.Entry(product_db).OriginalValues["Timestamp"] = Convert.FromBase64String(product_view_model.TimestampString); db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!ProductExists(id)) throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!")); else throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Conflict, "這筆資料已被其他人修改!")); } } return Ok(ToViewModel(product_db)); }