43 lines
1.6 KiB
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());
|
|
}
|
|
}
|