/// <summary> /// Convert to Permission Lite Model /// </summary> /// <param name="permission"></param> public static PermissionLite ToLiteModel(HetPermission permission) { PermissionLite permissionLite = new PermissionLite(); if (permission != null) { permissionLite.Id = permission.PermissionId; permissionLite.Code = permission.Code; permissionLite.Name = permission.Name; permissionLite.Description = permission.Description; } return(permissionLite); }
public virtual IActionResult RolesIdPermissionsPost([FromRoute] int id, [FromBody] HetPermission item) { HetRole role = _context.HetRole.AsNoTracking() .Where(x => x.RoleId == id) .Include(x => x.HetRolePermission) .ThenInclude(rolePerm => rolePerm.Permission) .FirstOrDefault(); // not found if (role == null) { return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration)))); } List <HetPermission> allPermissions = _context.HetPermission.ToList(); List <string> existingPermissionCodes = role.HetRolePermission.Select(x => x.Permission.Code).ToList(); if (!existingPermissionCodes.Contains(item.Code)) { HetPermission permToAdd = allPermissions.FirstOrDefault(x => x.Code == item.Code); // invalid permission if (permToAdd == null) { throw new ArgumentException(string.Format("Invalid Permission Code {0}", item.Code)); } // add permission HetRolePermission rolePermission = new HetRolePermission { Permission = permToAdd, Role = role }; _context.HetRolePermission.Add(rolePermission); } _context.SaveChanges(); // get updated permissions role = _context.HetRole.AsNoTracking() .Where(x => x.RoleId == id) .Include(x => x.HetRolePermission) .ThenInclude(rp => rp.Permission) .First(); // return role permissions return(new ObjectResult(new HetsResponse(role.HetRolePermission.ToList()))); }
public virtual IActionResult RolesIdPermissionsPut([FromRoute] int id, [FromBody] HetPermission[] items) { HetRole role = _context.HetRole.AsNoTracking() .Where(x => x.RoleId == id) .Include(x => x.HetRolePermission) .ThenInclude(rolePerm => rolePerm.Permission) .FirstOrDefault(); // not found if (role == null) { return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration)))); } // get permissions List <HetPermission> allPermissions = _context.HetPermission.AsNoTracking().ToList(); List <int> permissionIds = items.Select(x => x.PermissionId).ToList(); List <int> existingPermissionIds = role.HetRolePermission.Select(x => x.Permission.PermissionId).ToList(); List <int> permissionIdsToAdd = permissionIds.Where(x => !existingPermissionIds.Contains(x)).ToList(); // permissions to add foreach (int permissionId in permissionIdsToAdd) { HetPermission permToAdd = allPermissions .FirstOrDefault(x => x.PermissionId == permissionId); // invalid permission if (permToAdd == null) { throw new ArgumentException("Invalid Permission Code"); } // add permission HetRolePermission rolePermission = new HetRolePermission { PermissionId = permToAdd.PermissionId, RoleId = role.RoleId }; _context.HetRolePermission.Add(rolePermission); } // permissions to remove List <HetRolePermission> permissionsToRemove = role.HetRolePermission .Where(x => x.Permission != null && !permissionIds.Contains(x.Permission.PermissionId)).ToList(); foreach (HetRolePermission perm in permissionsToRemove) { _context.HetRolePermission.Remove(perm); } _context.SaveChanges(); // get updated permissions role = _context.HetRole.AsNoTracking() .Where(x => x.RoleId == id) .Include(x => x.HetRolePermission) .ThenInclude(rp => rp.Permission) .First(); // return role permissions return(new ObjectResult(new HetsResponse(role.HetRolePermission.ToList()))); }