public IHttpActionResult PostRole(RoleViewModel role_viewModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Role role = new Role { Id = role_viewModel.Id, Name = role_viewModel.Name }; db.Roles.Add(role); try { db.SaveChanges(); //寫入AccessLog MPAccessLog.WriteEntry(User.Identity.Name, AccessAction.Create, "Role", JsonConvert.SerializeObject(new { role.Id, role.Name })); } 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)); } return(CreatedAtRoute("GetRoleById", new { id = role.Id }, ToRoleViewModel(role))); }
public IHttpActionResult DeleteUser(string userName) { User user = db.Users.Find(userName); if (user == null) { return(NotFound()); } db.Users.Remove(user); try { db.SaveChanges(); //寫入AccessLog MPAccessLog.WriteEntry(User.Identity.Name, AccessAction.Delete, "User", userName); } catch (Exception ex) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message)); } return(Ok(new UserViewModel { UserName = userName })); }
public IHttpActionResult PostUserMenu(UserMenuViewModel userMenu) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = db.Users.Find(userMenu.UserName); if (user == null) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, "不存在的使用者!")); } var menus = db.Menus.Where(item => item.Id == userMenu.MenuId || item.ParentId == userMenu.MenuId); foreach (var item in menus) { user.Menus.Add(item); } try { db.SaveChanges(); //寫入AccessLog MPAccessLog.WriteEntry(User.Identity.Name, AccessAction.Create, "UserMenu", JsonConvert.SerializeObject(new { user.UserName, Menus = menus.Select(m => m.Id + m.Text).ToArray() })); } catch (Exception ex) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message)); } return(Ok()); }
public IHttpActionResult DeleteRole(int id) { Role role_db = db.Roles.Find(id); if (role_db == null) { return(NotFound()); } try { db.Roles.Remove(role_db); db.SaveChanges(); //寫入AccessLog MPAccessLog.WriteEntry(User.Identity.Name, AccessAction.Delete, "Role", role_db.Name); } 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)); } return(Ok(new RoleViewModel { Id = id })); }
public IHttpActionResult PutUser(string userName, UserPasswordViewModel user_view_model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (string.IsNullOrWhiteSpace(user_view_model.Password)) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotModified, "取消變更"))); } if (userName != user_view_model.UserName) { return(BadRequest()); } //把資料庫中的那筆資料讀出來 var user_db = db.Users.Find(userName); if (user_db == null) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!"))); } else { try { user_db.Password = user_view_model.Password; //db.Entry(user_db).OriginalValues["Timestamp"] = Convert.FromBase64String(user_view_model.TimestampString); db.SaveChanges(); //寫入AccessLog MPAccessLog.WriteEntry(User.Identity.Name, AccessAction.PasswordChanged, "User", user_db.UserName); } catch (DbUpdateConcurrencyException) { if (!UserExists(userName)) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!")); } else { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Conflict, "這筆資料已被其他人修改!"));// "" } } } return(Ok(ToUserViewModel(user_db))); }
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 PostUser(UserViewModel user_view_model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var role = db.Roles.Find(user_view_model.RoleId); if (role == null) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, "沒有對應的角色!"))); } User user = db.Users.Find(user_view_model.UserName); if (user == null) { try { //新增使用者 user = new User { UserName = user_view_model.UserName, Password = user_view_model.UserName, Role = role }; db.Users.Add(user); //新增使用者角色的功能選單 foreach (var menu in role.Menus) { user.Menus.Add(menu); } //寫入資料庫 db.SaveChanges(); //寫入AccessLog MPAccessLog.WriteEntry(User.Identity.Name, AccessAction.Create, "User", JsonConvert.SerializeObject(new { user.UserName, roleName = user.Role.Name })); } catch (Exception ex) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message)); } } return(CreatedAtRoute("GetUserByUserName", new { userName = user.UserName }, ToUserViewModel(user))); }
public IHttpActionResult PutRole(int id, RoleViewModel role_viewModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != role_viewModel.Id) { return(BadRequest()); } //把資料庫中的那筆資料讀出來 var role_db = db.Roles.Find(id); if (role_db == null) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!"))); } else { try { role_db.Name = role_viewModel.Name; db.Entry(role_db).OriginalValues["Timestamp"] = Convert.FromBase64String(role_viewModel.TimestampString); db.SaveChanges(); //寫入AccessLog MPAccessLog.WriteEntry(User.Identity.Name, AccessAction.Update, "Role", JsonConvert.SerializeObject(new { role_db.Id, role_db.Name })); } catch (DbUpdateConcurrencyException) { if (db.Roles.Find(id) == null) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!")); } else { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Conflict, "這筆資料已被其他人修改!")); } } } return(Ok(ToRoleViewModel(role_db))); }
public IHttpActionResult Delete(int id) { Menu item_db = db.Menus.Find(id); if (item_db == null) { return(NotFound()); } //db.Menus.Remove(item_db); db.Menus.RemoveRange(db.Menus.Where(item => item.ParentId == id || item.Id == id)); db.SaveChanges(); //寫入AccessLog MPAccessLog.WriteEntry(User.Identity.Name, AccessAction.Delete, "Menu", JsonConvert.SerializeObject(new { item_db.Id, item_db.Text, item_db.ContentUrl, item_db.ParentId })); return(Ok(new MenuViewModel { Id = id })); }
public IHttpActionResult DeleteRoleMenu(RoleMenuViewModel roleMenu) { var role = db.Roles.Find(roleMenu.RoleId); if (role == null) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, "不存在的RoleId!")); } var menus = db.Menus.Where(item => item.Id == roleMenu.MenuId || item.ParentId == roleMenu.MenuId); foreach (var item in menus) { role.Menus.Remove(item); //role.Menus.Remove(db.Menus.Find(item.ParentId)); } db.SaveChanges(); //寫入AccessLog MPAccessLog.WriteEntry(User.Identity.Name, AccessAction.Delete, "RoleMenu", JsonConvert.SerializeObject(new { role.Id, role.Name, Menus = menus.Select(m => m.Id + m.Text).ToArray() })); return(Ok()); }
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))); }
public IHttpActionResult PutUser(string userName, UserViewModel user_view_model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (userName != user_view_model.UserName) { return(BadRequest()); } //把資料庫中的那筆資料讀出來 var user_db = db.Users.Find(userName); if (user_db == null) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!"))); } else { try { //移除舊角色功能選單 foreach (var item in user_db.Role.Menus) { user_db.Menus.Remove(item); } //更新新角色 user_db.Role_Id = user_view_model.RoleId; db.Entry(user_db).OriginalValues["Timestamp"] = Convert.FromBase64String(user_view_model.TimestampString); db.SaveChanges(); //加入新角色功能選單 var roleMenus = user_db.Role.Menus; foreach (var item in roleMenus) { user_db.Menus.Add(item); } db.SaveChanges(); //寫入AccessLog MPAccessLog.WriteEntry(User.Identity.Name, AccessAction.Update, "User", JsonConvert.SerializeObject(new { user_db.UserName, roleName = user_db.Role.Name })); } catch (DbUpdateConcurrencyException) { if (!UserExists(userName)) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!")); } else { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Conflict, "這筆資料已被其他人修改!"));// "" } } catch (Exception ex) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message)); } } return(Ok(ToUserViewModel(user_db))); }