public async Task <UserWithRolesDto> EditUserRoles(UserEditRolesDto userEditRolesDto) { var userRolesFromRepo = await userDal.GetUserWithRoles(userEditRolesDto.UserId); var mappedUserRoles = mapper.Map <UserWithRolesDto>(userRolesFromRepo); var userFromRepo = await userDal.Get(u => u.Id == userEditRolesDto.UserId); var selectedRoles = userEditRolesDto.RoleId; selectedRoles = selectedRoles ?? new int[] {}; var addroles = new UserRole(); foreach (var item in selectedRoles.Except(mappedUserRoles.UserRoles.Select(p => p.Id))) { addroles = await userRoleDal.Add(new UserRole { UserId = userFromRepo.Id, RoleId = item }); } if (addroles == null) { throw new Exception("Can't added user roles.!!"); } var userroles = mappedUserRoles.UserRoles.Select(p => p.Id); bool removeRoles = false; foreach (var item in userroles.Except(selectedRoles)) { removeRoles = await userRoleDal.Delete(new UserRole { UserId = userFromRepo.Id, RoleId = item }); } if (!removeRoles) { throw new Exception("Could not remove old user roles.!!"); } return(mapper.Map <UserWithRolesDto>(await userDal.GetUserWithRoles(userFromRepo.Id))); }
public async Task <IActionResult> EditUserRoles([FromBody] UserEditRolesDto userEditRolesDto) { var editUserRoles = await userService.EditUserRoles(userEditRolesDto); return(Ok(editUserRoles)); }