uoa-monitor-service/src/main/java/eu/dnetlib/uoamonitorservice/service/StakeholderService.java

43 lines
1.6 KiB
Java

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<Stakeholder> getStakeholdersByTypeAndRole(String type, String defaultId, boolean manage) {
List<Stakeholder> 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.getAlias()))
.collect(Collectors.toList());
}
}