package eu.dnetlib.uoamonitorservice.service; import eu.dnetlib.uoaadmintoolslibrary.handlers.utils.RolesUtils; import eu.dnetlib.uoamonitorservice.dao.StakeholderDAO; import eu.dnetlib.uoamonitorservice.entities.Stakeholder; import eu.dnetlib.uoamonitorservice.entities.Visibility; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.stream.Collectors; @Service public class StakeholderService { @Autowired StakeholderDAO dao; @Autowired RolesUtils rolesUtils; public List getStakeholdersByTypeAndRole(String type, String defaultId, boolean manage) { List stakeholders; if(type != null && defaultId != null) { stakeholders = dao.findByDefaultIdAndType(defaultId, type); } else if(defaultId != null) { stakeholders = dao.findByDefaultId(defaultId); } else if(type != null) { stakeholders = dao.findByDefaultIdNotAndType(null, type); } else { stakeholders = dao.findByDefaultIdNot(null); } return stakeholders.stream().filter(stakeholder -> (!manage && (stakeholder.getVisibility() == Visibility.PUBLIC || stakeholder.getVisibility() == Visibility.RESTRICTED)) || rolesUtils.isPortalAdmin() || rolesUtils.isCurator(stakeholder.getType()) || rolesUtils.isManager(stakeholder.getType(), stakeholder.getId())) .collect(Collectors.toList()); } }