public void save(RoleDto role_dto) { try { _transactionManager.beginTransaction(); var roleWithSameName = _roleRepo.getByName(role_dto.name.Trim()); if (roleWithSameName != null) { throw new DuplicateItemException($"User Role with same name already exists."); } Role role = new Role() { name = role_dto.name, is_enabled = role_dto.is_active }; _roleRepo.insert(role); var rolePermissionDto = new RolePermissionMapDto(); rolePermissionDto.role_id = role.role_id; foreach (var permission in role_dto.permissions) { rolePermissionDto.addPermission(permission); } _rolePermissionMapService.saveOrUpdate(rolePermissionDto); _transactionManager.commitTransaction(); } catch (Exception) { _transactionManager.rollbackTransaction(); throw; } }
protected void update(RolePermissionMapDto dto) { var previousSavePermissions = _rolePermissionMapRepo.getByRoleId(dto.role_id) ?? throw new ItemNotFoundException($"Permissions has not been assigned to specified role."); List <string> previouslyAssignedPermissions = previousSavePermissions.Select(a => a.permission_name).ToList(); var userRole = _roleRepo.getById(dto.role_id) ?? throw new ItemNotFoundException($"User role with the id {dto.role_id} doesnot exist."); var removedPermissions = previousSavePermissions.Where(l1 => !dto.permissions.Any(permission => l1.permission_name == permission)).ToList(); foreach (var rolePermissionMap in removedPermissions) { _rolePermissionMapRepo.delete(rolePermissionMap); } var addedPermissions = dto.permissions.Where(l1 => !previousSavePermissions.Any(permission => l1 == permission.permission_name)).ToList(); dto.removeAllPermissions(); foreach (var addedPermission in addedPermissions) { dto.addPermission(addedPermission); } if (dto.permissions.Count > 0) { save(dto); } }
public void saveOrUpdate(RolePermissionMapDto dto) { try { _transactionManager.beginTransaction(); if (dto.permissions.Count == 0) { throw new InvalidValueException("At least one permission is required."); } var previousSavePermissions = _rolePermissionMapRepo.getByRoleId(dto.role_id); if (previousSavePermissions.Count == 0) { save(dto); } else { update(dto); } _transactionManager.commitTransaction(); } catch (Exception) { _transactionManager.rollbackTransaction(); throw; } }
private void updateRolePermissions(RoleDto role_dto) { RolePermissionMapDto rolePermissionMapDto = new RolePermissionMapDto(); rolePermissionMapDto.role_id = role_dto.role_id; foreach (var permission in role_dto.permissions.Distinct()) { rolePermissionMapDto.addPermission(permission); } _rolePermissionMapService.saveOrUpdate(rolePermissionMapDto); }
protected void save(RolePermissionMapDto dto) { if (dto.permissions.Count == 0) { throw new InvalidValueException("At least one permission is required."); } var role = _roleRepo.getById(dto.role_id) ?? throw new ItemNotFoundException($"User role with the id {dto.role_id} doesnot exist."); foreach (var permission in dto.permissions) { RolePermissionMap rolePermissionMap = new RolePermissionMap() { role = role, permission_name = permission }; _rolePermissionMapRepo.insert(rolePermissionMap); } }