public ActionResult Create(CustomerRoleModel model, bool continueEditing) { if (ModelState.IsValid) { var customerRole = model.ToEntity(); _customerService.InsertCustomerRole(customerRole); if (model.SelectedRuleSetIds?.Any() ?? false) { _ruleStorage.ApplyRuleSetMappings(customerRole, model.SelectedRuleSetIds); _customerService.UpdateCustomerRole(customerRole); } _customerActivityService.InsertActivity("AddNewCustomerRole", T("ActivityLog.AddNewCustomerRole"), customerRole.Name); NotifySuccess(T("Admin.Customers.CustomerRoles.Added")); return(continueEditing ? RedirectToAction("Edit", new { id = customerRole.Id }) : RedirectToAction("List")); } return(View(model)); }
public ActionResult Create(CustomerRoleModel model, bool continueEditing) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageCustomers)) { return(AccessDeniedView()); } if (ModelState.IsValid) { var customerRole = model.ToEntity(); _customerService.InsertCustomerRole(customerRole); //activity log _customerActivityService.InsertActivity("AddNewCustomerRole", customerRole.Id, _localizationService.GetResource("ActivityLog.AddNewCustomerRole"), customerRole.Name); SuccessNotification(_localizationService.GetResource("Admin.Customers.CustomerRoles.Added")); return(continueEditing ? RedirectToAction("Edit", new { id = customerRole.Id }) : RedirectToAction("List")); } //If we got this far, something failed, redisplay form return(View(model)); }
public ActionResult Edit(CustomerRoleModel model, bool continueEditing, FormCollection form) { var customerRole = _customerService.GetCustomerRoleById(model.Id); if (customerRole == null) { return(RedirectToAction("List")); } try { if (ModelState.IsValid) { if (customerRole.IsSystemRole && !model.Active) { throw new SmartException(T("Admin.Customers.CustomerRoles.Fields.Active.CantEditSystem")); } if (customerRole.IsSystemRole && !customerRole.SystemName.Equals(model.SystemName, StringComparison.InvariantCultureIgnoreCase)) { throw new SmartException(T("Admin.Customers.CustomerRoles.Fields.SystemName.CantEditSystem")); } customerRole = model.ToEntity(customerRole); _customerService.UpdateCustomerRole(customerRole); // Update permissions. var permissionKey = "permission-"; var existingMappings = customerRole.PermissionRoleMappings.ToDictionarySafe(x => x.PermissionRecordId, x => x); var mappings = form.AllKeys.Where(x => x.StartsWith(permissionKey)) .Select(x => { var id = x.Substring(permissionKey.Length).ToInt(); bool?allow = null; var value = form[x].EmptyNull(); if (value.StartsWith("2")) { allow = true; } else if (value.StartsWith("1")) { allow = false; } return(new { id, allow }); }) .ToDictionary(x => x.id, x => x.allow); using (var scope = new DbContextScope(ctx: Services.DbContext, validateOnSave: false, autoDetectChanges: false, autoCommit: false)) { foreach (var item in mappings) { if (existingMappings.TryGetValue(item.Key, out var mapping)) { if (item.Value.HasValue) { mapping.Allow = item.Value.Value; Services.Permissions.UpdatePermissionRoleMapping(mapping); } else { Services.Permissions.DeletePermissionRoleMapping(mapping); } } else if (item.Value.HasValue) { Services.Permissions.InsertPermissionRoleMapping(new PermissionRoleMapping { Allow = item.Value.Value, PermissionRecordId = item.Key, CustomerRoleId = customerRole.Id }); } } scope.Commit(); } _customerActivityService.InsertActivity("EditCustomerRole", T("ActivityLog.EditCustomerRole"), customerRole.Name); NotifySuccess(T("Admin.Customers.CustomerRoles.Updated")); return(continueEditing ? RedirectToAction("Edit", customerRole.Id) : RedirectToAction("List")); } return(View(model)); } catch (Exception ex) { NotifyError(ex); return(RedirectToAction("Edit", new { id = customerRole.Id })); } }