diff --git a/src/main/java/eu/dnetlib/uoamonitorservice/controllers/StakeholderController.java b/src/main/java/eu/dnetlib/uoamonitorservice/controllers/StakeholderController.java index d6081dd..b595ce3 100644 --- a/src/main/java/eu/dnetlib/uoamonitorservice/controllers/StakeholderController.java +++ b/src/main/java/eu/dnetlib/uoamonitorservice/controllers/StakeholderController.java @@ -689,7 +689,7 @@ public class StakeholderController { @PreAuthorize("isAuthenticated()") @RequestMapping(value = "/{stakeholderId}/change-visibility", method = RequestMethod.POST) - public Visibility changeStakeholderVisibility(@PathVariable("stakeholderId") String stakeholderId, + public Stakeholder changeStakeholderVisibility(@PathVariable("stakeholderId") String stakeholderId, @RequestParam("visibility") Visibility visibility, @RequestParam(required = false) Boolean propagate) { log.debug("change stakeholder visibility: "+visibility + " - toggle propagate: "+((propagate != null && propagate) ? "true" : "false")); log.debug("Stakeholder: "+stakeholderId); @@ -714,17 +714,24 @@ public class StakeholderController { return changeStakeholderVisibilityTree(stakeholder, visibility, propagate); } - private Visibility changeStakeholderVisibilityTree(Stakeholder stakeholder, Visibility visibility, Boolean propagate) { + private Stakeholder changeStakeholderVisibilityTree(Stakeholder stakeholder, Visibility visibility, Boolean propagate) { + Stakeholder stakeholderFull = new Stakeholder<>(stakeholder); + List topicsFull = new ArrayList<>(); + if(propagate != null && propagate) { for (String topicId : stakeholder.getTopics()) { - topicController.changeVisibilityTree(topicId, visibility, propagate); + topicsFull.add(topicController.changeVisibilityTree(topicId, visibility, propagate)); } } - stakeholder.setVisibility(visibility); + stakeholder.setVisibility(visibility); stakeholderDAO.save(stakeholder); log.debug("Stakeholder toggled!"); - return stakeholder.getVisibility(); + + stakeholderFull.setVisibility(visibility); + stakeholderFull.setTopics(topicsFull); + + return stakeholder; } // The following are not supposed to be used