use of fr.univlorraine.ecandidat.entities.ecandidat.Commission in project esup-ecandidat by EsupPortail.
the class UserController method getCommissionFonctionnalite.
/**
* Renvoie la fonctionnalité et le centre de candidature en cours
* @param codFonc
* le code de la fonctionnalite
* @return l'element de session de fonctionnalite
*/
public SecurityCommissionFonc getCommissionFonctionnalite(final String codFonc, final Authentication auth) {
final SecurityCommission scc = getCommission(auth);
if (scc != null) {
final Commission commission = commissionController.getCommissionById(scc.getIdComm());
/* Verification de la concordance entre le centre de candidature en cours et le
* menu chargé dans l'UI Utile lorsqu'un user a changé de centre dans un autre
* onglet */
MainUI.getCurrent().checkConcordanceCommission(commission);
if (commission != null) {
final SecurityCommissionFonc sf = new SecurityCommissionFonc(commission, null);
if (isScolCentrale(auth)) {
sf.setDroit(Droit.WRITE);
return sf;
} else if (scc.getListFonctionnalite() != null && scc.getListFonctionnalite().size() != 0) {
final Optional<DroitProfilFonc> fonc = scc.getListFonctionnalite().stream().filter(e -> e.getId().getCodFonc().equals(codFonc)).findFirst();
if (fonc.isPresent()) {
if (fonc.get().getTemReadOnly()) {
sf.setDroit(Droit.READ_ONLY);
} else {
sf.setDroit(Droit.WRITE);
}
return sf;
}
}
}
} else {
MainUI.getCurrent().checkConcordanceCommission(null);
}
return new SecurityCommissionFonc(Droit.NO_RIGHT);
}
use of fr.univlorraine.ecandidat.entities.ecandidat.Commission in project esup-ecandidat by EsupPortail.
the class UserController method connectOther.
/**
* Connect un membre de commission ou centre cand
* @param username
* le username
* @return le user connecte
*/
private SecurityUser connectOther(final String username) {
if (loadBalancingController.isLoadBalancingCandidatMode()) {
return null;
}
List<GrantedAuthority> authoritiesListe = new ArrayList<>();
final List<DroitProfilInd> listeDroitProfilInd = new ArrayList<>();
final Individu ind = individuController.getIndividu(username);
final PreferenceInd pref = (ind != null ? ind.getPreferenceInd() : null);
if (ind != null) {
// On recherche les profils autorisé (ctrCand ou commission pour
// l'utilisateur suivant son login --> On ajoute à la liste
listeDroitProfilInd.addAll(droitProfilController.searchDroitByLogin(username));
/* Création de la liste d'autorities */
SecurityCentreCandidature ctrCand = null;
SecurityCommission commission = null;
/* On place la commission favorite si elle existe en tete */
if (pref != null && pref.getIdCommPref() != null) {
final Optional<DroitProfilInd> optComm = listeDroitProfilInd.stream().filter(droit -> droit.getCommissionMembre() != null && droit.getCommissionMembre().getCommission() != null && pref.getIdCommPref().equals(droit.getCommissionMembre().getCommission().getIdComm())).findFirst();
if (optComm.isPresent()) {
Collections.swap(listeDroitProfilInd, 0, listeDroitProfilInd.indexOf(optComm.get()));
}
}
/* On place le centre de candidature favorit si il existe en tete */
if (pref != null && pref.getIdCtrCandPref() != null) {
final Optional<DroitProfilInd> optCtrCand = listeDroitProfilInd.stream().filter(droit -> droit.getGestionnaire() != null && droit.getGestionnaire().getCentreCandidature() != null && pref.getIdCtrCandPref().equals(droit.getGestionnaire().getCentreCandidature().getIdCtrCand())).findFirst();
if (optCtrCand.isPresent()) {
Collections.swap(listeDroitProfilInd, 0, listeDroitProfilInd.indexOf(optCtrCand.get()));
}
}
/* On parcourt la liste */
for (final DroitProfilInd droitProfilInd : listeDroitProfilInd) {
String codeRole = null;
if (droitProfilInd.getDroitProfil().isDroitProfilGestionnaireCandidat()) {
codeRole = ConstanteUtils.ROLE_GESTION_CANDIDAT;
} else if (droitProfilInd.getDroitProfil().isDroitProfilGestionnaireCandidatLS()) {
codeRole = ConstanteUtils.ROLE_GESTION_CANDIDAT_LS;
} else if (droitProfilInd.getDroitProfil().isDroitProfilGestionnaireCtrCand()) {
codeRole = ConstanteUtils.ROLE_CENTRE_CANDIDATURE;
final Gestionnaire gestionnaire = droitProfilInd.getGestionnaire();
if (ctrCand == null && gestionnaire != null && gestionnaire.getCentreCandidature() != null && gestionnaire.getCentreCandidature().getTesCtrCand()) {
final List<Integer> listComm = new ArrayList<>();
gestionnaire.getCommissions().forEach(e -> listComm.add(e.getIdComm()));
ctrCand = new SecurityCentreCandidature(droitProfilInd.getGestionnaire().getCentreCandidature(), new ArrayList<>(droitProfilInd.getDroitProfil().getDroitProfilFoncs()), individuController.getCodCgeForGestionnaire(gestionnaire, username), false, gestionnaire.getTemAllCommGest(), listComm);
}
} else if (droitProfilInd.getDroitProfil().isDroitProfilCommission()) {
codeRole = ConstanteUtils.ROLE_COMMISSION;
final CommissionMembre membre = droitProfilInd.getCommissionMembre();
if (commission == null && membre != null && membre.getCommission() != null && membre.getCommission().getTesComm() && membre.getCommission().getCentreCandidature().getTesCtrCand()) {
commission = new SecurityCommission(droitProfilInd.getCommissionMembre().getCommission(), new ArrayList<>(droitProfilInd.getDroitProfil().getDroitProfilFoncs()), false);
}
}
if (codeRole != null) {
final SimpleGrantedAuthority sga = new SimpleGrantedAuthority(codeRole);
if (!authoritiesListe.contains(sga)) {
authoritiesListe.add(sga);
}
}
}
// gestion des gestionnaires de candidat
authoritiesListe = traiteDroitGestionnaireCandidat(authoritiesListe, ctrCand, commission);
// on verifie qu'il y a bien des droits!
if (authoritiesListe.size() > 0) {
return new SecurityUserGestionnaire(username, getDisplayNameFromLdap(username), authoritiesListe, ctrCand, commission, pref);
}
}
return null;
}
use of fr.univlorraine.ecandidat.entities.ecandidat.Commission in project esup-ecandidat by EsupPortail.
the class CommissionController method getCommissionsGestionnaire.
/**
* @return la liste des commission dont le user est membre
*/
public List<Commission> getCommissionsGestionnaire() {
final Authentication auth = userController.getCurrentAuthentication();
if (userController.isScolCentrale(auth)) {
return commissionRepository.findByTesCommAndCentreCandidatureTesCtrCand(true, true);
}
final List<DroitProfilInd> listeProfil = droitProfilController.searchDroitByLoginAndIsCommissionMember(userController.getCurrentUserLogin(auth));
return listeProfil.stream().map(e -> e.getCommissionMembre().getCommission()).filter(c -> c != null && c.getCentreCandidature() != null && c.getCentreCandidature().getTesCtrCand() && c.getTesComm()).collect(Collectors.toList());
}
use of fr.univlorraine.ecandidat.entities.ecandidat.Commission in project esup-ecandidat by EsupPortail.
the class CommissionController method editNewCommission.
/**
* Ouvre une fenêtre d'édition d'un nouveau commission.
*/
public void editNewCommission(final CentreCandidature ctrCand) {
final Commission commission = new Commission(ctrCand, userController.getCurrentUserLogin());
commission.setI18nCommentRetourComm(new I18n(i18nController.getTypeTraduction(NomenclatureUtils.TYP_TRAD_COMM_COMMENT_RETOUR)));
UI.getCurrent().addWindow(new CtrCandCommissionWindow(commission, true));
}
use of fr.univlorraine.ecandidat.entities.ecandidat.Commission in project esup-ecandidat by EsupPortail.
the class CommissionController method deleteCommission.
/**
* Supprime une commission
* @param commission
*/
public void deleteCommission(final Commission commission) {
Assert.notNull(commission, applicationContext.getMessage("assert.notNull", null, UI.getCurrent().getLocale()));
if (formationRepository.countByCommission(commission) > 0) {
Notification.show(applicationContext.getMessage("commission.error.delete", new Object[] { Formation.class.getSimpleName() }, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE);
return;
}
/* Verrou */
if (!lockController.getLockOrNotify(commission, null)) {
return;
}
final ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("commission.window.confirmDelete", new Object[] { commission.getCodComm() }, UI.getCurrent().getLocale()), applicationContext.getMessage("commission.window.confirmDeleteTitle", null, UI.getCurrent().getLocale()));
confirmWindow.addBtnOuiListener(e -> {
/* Contrôle que le client courant possède toujours le lock */
if (lockController.getLockOrNotify(commission, null)) {
commission.getCommissionMembres().forEach(gest -> {
droitProfilController.deleteDroitProfilInd(gest.getDroitProfilInd());
});
commission.getCommissionMembres().clear();
final Commission commissionSave = commissionRepository.save(commission);
try {
deleteCommissionDbAndFile(commissionSave);
/* on controle qu'on ne supprime pas la commission en cours */
controlDisableOrDeleteCommissionEnCours(commission, true);
/* Suppression du lock */
lockController.releaseLock(commissionSave);
} catch (final Exception ex) {
Notification.show(applicationContext.getMessage("file.error.delete", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE);
}
}
});
confirmWindow.addCloseListener(e -> {
/* Suppression du lock */
lockController.releaseLock(commission);
});
UI.getCurrent().addWindow(confirmWindow);
}
Aggregations