/// <summary> /// 權限群組管理 - 新增 /// </summary> /// <returns></returns> public ActionResult Create() { CreateOrEditRoleViewModel viewModel = new CreateOrEditRoleViewModel { }; viewModel.AllMenu = Menu.GetSubMenu(); return(View("_Create", viewModel)); }
public async Task <ActionResult> CreateOrEditRole(int?id) { var role = await _roleAppService.GetRoleForEdit(new NullableIdDto <int> { Id = id }); var viewModel = new CreateOrEditRoleViewModel(role); return(View("_CreateOrEditModal", viewModel)); }
public async Task <IActionResult> Create(CreateOrEditRoleViewModel model) { if (ModelState.IsValid) { var role = Mapper.Map <Role>(model); await _roleManager.CreateAsync(role); Notifier.Success("你已成功创建一条角色记录。"); return(RedirectToAction(nameof(List))); } return(View(model)); }
public async Task <IActionResult> Edit(CreateOrEditRoleViewModel model) { var role = await _roleManager.FindByIdAsync(model.Id.ToString()); if (role == null) { return(NotFound(model.Id)); } if (ModelState.IsValid) { _ = Mapper.Map(model, role); await _roleManager.UpdateAsync(role); Notifier.Success("你已成功编辑一条角色记录。"); return(RedirectToAction(nameof(List))); } return(View(model)); }
public ActionResult Edit(string id) { CreateOrEditRoleViewModel viewModel = new CreateOrEditRoleViewModel { SaveMode = EnumSaveMode.Update }; using (TestEntities db = new TestEntities()) { var role = db.Roles.Where(y => y.RoleID == id).SingleOrDefault(); if (role != null) { viewModel.RoleId = role.RoleID; viewModel.RoleName = role.RoleName; viewModel.Description = role.Description; viewModel.AllMenu = Menu.GetSubMenu(id); } return(View("_Edit", viewModel)); } }
public ActionResult Save(CreateOrEditRoleViewModel model) { //valid //Rule1:驗證是否已經存在相同代碼 (只有新增時 檢查) using (TestEntities db = new TestEntities()) { if (model.SaveMode == EnumSaveMode.Create) { var isExist = db.Roles.Where(y => y.RoleID == model.RoleId).SingleOrDefault() != null ? true : false; if (isExist) { ModelState.AddModelError("", string.Format("群組代碼{0}已存在", model.RoleId)); } } //Rule2:檢查有沒有勾選權限 if (model.PermissionList.Count == 0) { ModelState.AddModelError("", "請至少勾選一個權限"); } if (ModelState.IsValid) { try { var userInfo = User.GetMVCUser(); if (model.SaveMode == EnumSaveMode.Create) { Roles role = new Roles { RoleID = model.RoleId, RoleName = model.RoleName, Description = model.Description, CreatorAccount = userInfo.UserId, DateCreated = DateTime.Now, IsDefault = false }; //塞權限 foreach (var item in model.PermissionList) { //item is "SYS01-Delete" var detailArr = item.Split('-'); var permissionID = detailArr[0]; var operationID = detailArr[1]; var temp = db.PermissionOperations .Where(x => x.PermissionID == permissionID && x.OperationID == operationID) .FirstOrDefault(); role.PermissionOperations.Add(temp); } db.Entry <Roles>(role).State = EntityState.Added; } else { var role = db.Roles.Where(y => y.RoleID == model.RoleId).SingleOrDefault(); role.RoleName = model.RoleName; role.Description = model.Description; role.ModifierAccount = userInfo.UserId; role.DateModified = DateTime.Now; //全砍再新增 if (role.PermissionOperations.Count > 0) { role.PermissionOperations.Clear(); } //塞權限 foreach (var item in model.PermissionList) { //item is "SYS01-Delete" var detailArr = item.Split('-'); var permissionID = detailArr[0]; var operationID = detailArr[1]; var temp = db.PermissionOperations .Where(x => x.PermissionID == permissionID && x.OperationID == operationID) .FirstOrDefault(); role.PermissionOperations.Add(temp); } } db.SaveChanges(); //當編輯成功更新系統的權限快取 if (model.SaveMode == EnumSaveMode.Update) { List <string> cacheKeysToDie = new List <string>(); // retrieve application Cache enumerator var enumerator = HttpRuntime.Cache.GetEnumerator(); // copy all keys that currently exist in Cache while (enumerator.MoveNext()) { var tempCache = enumerator.Key.ToString(); if (tempCache.Contains(model.RoleId)) { cacheKeysToDie.Add(tempCache); } } // delete every key from cache foreach (var item in cacheKeysToDie) { HttpRuntime.Cache.Remove(item); } } return(Json(new { success = true })); } catch (DbEntityValidationException dbEx) { var errors = dbEx.EntityValidationErrors.SelectMany(x => x.ValidationErrors.Select(y => y.PropertyName + ":" + y.ErrorMessage)).FirstOrDefault(); ModelState.AddModelError("", "系統發生錯誤:" + errors); _logger.Error(dbEx, "Save - 發生錯誤:{0}"); } catch (Exception ex) { ModelState.AddModelError("", "系統發生錯誤:" + ex.Message); _logger.Error(ex, "Save - 發生錯誤:{0}"); } } return(Json(new { errors = ModelState.GetErrors() })); } }