public IHttpActionResult Put(int id, MenuViewModel item_viewModel) { if (!ModelState.IsValid) return BadRequest(ModelState); if (id != item_viewModel.Id) return BadRequest(); //把資料庫中的那筆資料讀出來 var item_db = db.Menus.Find(id); if (item_db == null) { return ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!")); } else { try { item_db.Text = item_viewModel.Text; item_db.ContentUrl = item_viewModel.ContentUrl; item_db.CssClass = item_viewModel.CssClass; item_db.ParentId = item_viewModel.ParentId; db.Entry(item_db).OriginalValues["Timestamp"] = Convert.FromBase64String(item_viewModel.TimestampString); db.SaveChanges(); //寫入AccessLog MPAccessLog.WriteEntry(User.Identity.Name, AccessAction.Update, "Menu", JsonConvert.SerializeObject(new { item_db.Id, item_db.Text, item_db.ContentUrl, item_db.ParentId })); } catch (DbUpdateConcurrencyException) { if (db.Menus.Find(id) == null) throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!")); else throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Conflict, "這筆資料已被其他人修改!")); } } return Ok(ToMenuViewModel(item_db)); }
public IHttpActionResult Post(MenuViewModel item_viewModel) { if (!ModelState.IsValid) { return BadRequest(ModelState); } Menu item = new Menu { Id = item_viewModel.Id, Text = item_viewModel.Text, ContentUrl=item_viewModel.ContentUrl, CssClass=item_viewModel.CssClass, ParentId= item_viewModel.ParentId}; db.Menus.Add(item); try { db.SaveChanges(); //寫入AccessLog MPAccessLog.WriteEntry(User.Identity.Name, AccessAction.Create, "Menu", JsonConvert.SerializeObject(new { item.Id, item.Text,item.ContentUrl,item.ParentId })); } catch (DbEntityValidationException ex) { var entityError = ex.EntityValidationErrors.SelectMany(x => x.ValidationErrors).Select(x => x.ErrorMessage); var getFullMessage = string.Join("; ", entityError); var exceptionMessage = string.Concat(ex.Message, "errors are: ", getFullMessage); throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, exceptionMessage)); } catch (DbUpdateException ex) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, ex.InnerException.Message)); } return CreatedAtRoute("DefaultApi", new { id = item.Id }, ToMenuViewModel(item)); }