use of fr.univlorraine.ecandidat.entities.ecandidat.Gestionnaire in project esup-ecandidat by EsupPortail.
the class UserController method getSecurityCentreCandidature.
/**
* Renvoi le centre de candidature à rattacher à l'utilisateur
* @param id
* l'id du ctrCand
* @param username
* le user
* @return L'element de connexion ctrCand
*/
private SecurityCentreCandidature getSecurityCentreCandidature(final Integer id, final String username) {
for (final DroitProfilInd droitProfilInd : droitProfilController.searchDroitByLoginAndIdCtrCand(id, username)) {
if (droitProfilInd.getDroitProfil().isDroitProfilGestionnaireCtrCand()) {
final Gestionnaire gestionnaire = droitProfilInd.getGestionnaire();
if (gestionnaire != null && gestionnaire.getCentreCandidature() != null && gestionnaire.getCentreCandidature().getTesCtrCand()) {
final List<Integer> listComm = new ArrayList<>();
gestionnaire.getCommissions().forEach(e -> listComm.add(e.getIdComm()));
return new SecurityCentreCandidature(droitProfilInd.getGestionnaire().getCentreCandidature(), new ArrayList<>(droitProfilInd.getDroitProfil().getDroitProfilFoncs()), individuController.getCodCgeForGestionnaire(gestionnaire, username), false, gestionnaire.getTemAllCommGest(), listComm);
}
}
}
return null;
}
use of fr.univlorraine.ecandidat.entities.ecandidat.Gestionnaire 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.Gestionnaire in project esup-ecandidat by EsupPortail.
the class CentreCandidatureController method addProfilToGestionnaire.
/**
* Ajoute un profil à un gestionnaire
*
* @param ctrCand
*/
public void addProfilToGestionnaire(final CentreCandidature ctrCand) {
/* Verrou */
if (!lockController.getLockOrNotify(ctrCand, null)) {
return;
}
DroitProfilGestionnaireWindow window = new DroitProfilGestionnaireWindow(ctrCand);
window.addDroitProfilGestionnaireListener((individu, droit, loginApo, centreGestion, isAllCommission, listeCommission) -> {
/* Contrôle que le client courant possède toujours le lock */
if (lockController.getLockOrNotify(ctrCand, null)) {
if (droitProfilController.getProfilIndByCentreCandidatureAndLogin(ctrCand, individu).size() == 0) {
Individu ind = individuController.saveIndividu(individu);
DroitProfilInd dpi = droitProfilController.saveProfilInd(ind, droit);
Gestionnaire gest = new Gestionnaire(ctrCand, dpi, loginApo, centreGestion, isAllCommission, listeCommission);
ctrCand.getGestionnaires().add(gest);
centreCandidatureRepository.save(ctrCand);
} else {
Notification.show(applicationContext.getMessage("droitprofilind.gest.allready", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE);
}
}
});
window.addCloseListener(e -> {
/* Suppression du lock */
lockController.releaseLock(ctrCand);
});
UI.getCurrent().addWindow(window);
}
use of fr.univlorraine.ecandidat.entities.ecandidat.Gestionnaire in project esup-ecandidat by EsupPortail.
the class ScolCentreCandidatureView method init.
/**
* Initialise la vue
*/
@PostConstruct
public void init() {
/* Style */
setSizeFull();
setMargin(true);
setSpacing(true);
if (parametreController.getSiScolMode().equals(ConstanteUtils.SI_SCOL_APOGEE)) {
FIELDS_ORDER_GEST = FIELDS_ORDER_GEST_APOGEE;
} else {
FIELDS_ORDER_GEST = FIELDS_ORDER_GEST_SI_SCOL;
}
/* Table des centres de candidatures */
VerticalLayout ctrCandLayout = new VerticalLayout();
ctrCandLayout.setSizeFull();
ctrCandLayout.setSpacing(true);
/* Titre */
Label titleParam = new Label(applicationContext.getMessage("ctrCand.title", null, UI.getCurrent().getLocale()));
titleParam.addStyleName(StyleConstants.VIEW_TITLE);
ctrCandLayout.addComponent(titleParam);
/* Boutons */
HorizontalLayout buttonsLayout = new HorizontalLayout();
buttonsLayout.setWidth(100, Unit.PERCENTAGE);
buttonsLayout.setSpacing(true);
ctrCandLayout.addComponent(buttonsLayout);
OneClickButton btnNew = new OneClickButton(applicationContext.getMessage("ctrCand.btnNouveau", null, UI.getCurrent().getLocale()), FontAwesome.PLUS);
btnNew.setEnabled(true);
btnNew.addClickListener(e -> {
centreCandidatureController.editNewCentreCandidature();
});
buttonsLayout.addComponent(btnNew);
buttonsLayout.setComponentAlignment(btnNew, Alignment.MIDDLE_LEFT);
OneClickButton btnEdit = new OneClickButton(applicationContext.getMessage("btnEdit", null, UI.getCurrent().getLocale()), FontAwesome.PENCIL);
btnEdit.setEnabled(false);
btnEdit.addClickListener(e -> {
if (centreCandidatureTable.getValue() instanceof CentreCandidature) {
centreCandidatureController.editCentreCandidature((CentreCandidature) centreCandidatureTable.getValue(), true);
}
});
buttonsLayout.addComponent(btnEdit);
buttonsLayout.setComponentAlignment(btnEdit, Alignment.MIDDLE_CENTER);
OneClickButton btnDelete = new OneClickButton(applicationContext.getMessage("btnDelete", null, UI.getCurrent().getLocale()), FontAwesome.TRASH_O);
btnDelete.setEnabled(false);
btnDelete.addClickListener(e -> {
if (centreCandidatureTable.getValue() instanceof CentreCandidature) {
centreCandidatureController.deleteCentreCandidature((CentreCandidature) centreCandidatureTable.getValue());
}
});
buttonsLayout.addComponent(btnDelete);
buttonsLayout.setComponentAlignment(btnDelete, Alignment.MIDDLE_RIGHT);
Button btnExport = new Button(applicationContext.getMessage("btnExport", null, UI.getCurrent().getLocale()), FontAwesome.FILE_EXCEL_O);
/* Export de la liste des formations */
btnExport.setDescription(applicationContext.getMessage("btnExport", null, UI.getCurrent().getLocale()));
btnExport.setDisableOnClick(true);
new OnDemandFileDownloader(new OnDemandStreamFile() {
@Override
public OnDemandFile getOnDemandFile() {
@SuppressWarnings("unchecked") List<CentreCandidature> liste = (List<CentreCandidature>) centreCandidatureTable.getContainerDataSource().getItemIds();
if (liste.size() == 0) {
btnExport.setEnabled(true);
return null;
}
/* Téléchargement */
OnDemandFile file = centreCandidatureController.generateExport(liste);
if (file != null) {
btnExport.setEnabled(true);
return file;
}
btnExport.setEnabled(true);
return null;
}
}, btnExport);
buttonsLayout.addComponent(btnExport);
buttonsLayout.setComponentAlignment(btnExport, Alignment.MIDDLE_RIGHT);
/* Table des centreCandidatures */
BeanItemContainer<CentreCandidature> container = new BeanItemContainer<>(CentreCandidature.class, centreCandidatureController.getCentreCandidatures());
centreCandidatureTable.setContainerDataSource(container);
centreCandidatureTable.addBooleanColumn(CentreCandidature_.tesCtrCand.getName());
centreCandidatureTable.addBooleanColumn(CentreCandidature_.temDematCtrCand.getName());
centreCandidatureTable.setVisibleColumns((Object[]) FIELDS_ORDER);
for (String fieldName : FIELDS_ORDER) {
centreCandidatureTable.setColumnHeader(fieldName, applicationContext.getMessage("ctrCand.table." + fieldName, null, UI.getCurrent().getLocale()));
}
centreCandidatureTable.setSortContainerPropertyId(CentreCandidature_.codCtrCand.getName());
centreCandidatureTable.setColumnCollapsingAllowed(true);
centreCandidatureTable.setColumnReorderingAllowed(true);
centreCandidatureTable.setSelectable(true);
centreCandidatureTable.setImmediate(true);
centreCandidatureTable.addItemSetChangeListener(e -> centreCandidatureTable.sanitizeSelection());
centreCandidatureTable.addValueChangeListener(e -> {
/* Les boutons d'édition et de suppression de centreCandidature sont actifs seulement si une centreCandidature est sélectionnée. */
boolean centreCandidatureIsSelected = centreCandidatureTable.getValue() instanceof CentreCandidature;
btnEdit.setEnabled(centreCandidatureIsSelected);
btnDelete.setEnabled(centreCandidatureIsSelected);
btnNewGest.setEnabled(centreCandidatureIsSelected);
if (centreCandidatureIsSelected) {
majGestionnaireTable((CentreCandidature) centreCandidatureTable.getValue());
} else {
majGestionnaireTable(null);
}
});
centreCandidatureTable.addItemClickListener(e -> {
if (e.isDoubleClick()) {
centreCandidatureTable.select(e.getItemId());
btnEdit.click();
}
});
ctrCandLayout.addComponent(centreCandidatureTable);
ctrCandLayout.setExpandRatio(centreCandidatureTable, 1);
centreCandidatureTable.setSizeFull();
addComponent(ctrCandLayout);
setExpandRatio(ctrCandLayout, 3);
/* Gestionnaires */
VerticalLayout ctrCandGestLayout = new VerticalLayout();
ctrCandGestLayout.setSizeFull();
ctrCandGestLayout.setSpacing(true);
/* Titre */
HorizontalLayout layoutCtrGestLabel = new HorizontalLayout();
layoutCtrGestLabel.setSpacing(true);
Label titleGest = new Label(applicationContext.getMessage("ctrCand.title.gest", null, UI.getCurrent().getLocale()));
titleGest.addStyleName(StyleConstants.VIEW_SUBTITLE);
layoutCtrGestLabel.addComponent(titleGest);
layoutCtrGestLabel.setComponentAlignment(titleGest, Alignment.BOTTOM_LEFT);
labelCtrCandGest.setValue(applicationContext.getMessage("ctrCand.gest.noctrCand", null, UI.getCurrent().getLocale()));
labelCtrCandGest.addStyleName(ValoTheme.LABEL_SMALL);
layoutCtrGestLabel.addComponent(labelCtrCandGest);
layoutCtrGestLabel.setComponentAlignment(labelCtrCandGest, Alignment.BOTTOM_LEFT);
ctrCandGestLayout.addComponent(layoutCtrGestLabel);
/* Boutons */
HorizontalLayout buttonsLayoutGest = new HorizontalLayout();
buttonsLayoutGest.setWidth(100, Unit.PERCENTAGE);
buttonsLayoutGest.setSpacing(true);
ctrCandGestLayout.addComponent(buttonsLayoutGest);
btnNewGest.setCaption(applicationContext.getMessage("droitprofilind.btnNouveauGest", null, UI.getCurrent().getLocale()));
btnNewGest.setEnabled(false);
btnNewGest.addClickListener(e -> {
centreCandidatureController.addProfilToGestionnaire((CentreCandidature) centreCandidatureTable.getValue());
});
buttonsLayoutGest.addComponent(btnNewGest);
buttonsLayoutGest.setComponentAlignment(btnNewGest, Alignment.MIDDLE_LEFT);
/* Edit profil */
OneClickButton btnEditGest = new OneClickButton(applicationContext.getMessage("btnEdit", null, UI.getCurrent().getLocale()), FontAwesome.PENCIL);
btnEditGest.setEnabled(false);
btnEditGest.addClickListener(e -> {
if (centreCandidatureGestTable.getValue() instanceof Gestionnaire) {
centreCandidatureController.updateProfilToGestionnaire((Gestionnaire) centreCandidatureGestTable.getValue());
}
});
buttonsLayoutGest.addComponent(btnEditGest);
buttonsLayoutGest.setComponentAlignment(btnEditGest, Alignment.MIDDLE_CENTER);
/* Delete profil */
OneClickButton btnDeleteGest = new OneClickButton(applicationContext.getMessage("btnDelete", null, UI.getCurrent().getLocale()), FontAwesome.TRASH_O);
btnDeleteGest.setEnabled(false);
btnDeleteGest.addClickListener(e -> {
if (centreCandidatureGestTable.getValue() instanceof Gestionnaire) {
centreCandidatureController.deleteProfilToGestionnaire((Gestionnaire) centreCandidatureGestTable.getValue());
}
});
buttonsLayoutGest.addComponent(btnDeleteGest);
buttonsLayoutGest.setComponentAlignment(btnDeleteGest, Alignment.MIDDLE_RIGHT);
/* Table des gestionnaires */
BeanItemContainer<Gestionnaire> containerGest = new BeanItemContainer<>(Gestionnaire.class);
containerGest.addNestedContainerProperty(Gestionnaire_.droitProfilInd.getName() + "." + DroitProfilInd_.individu.getName() + "." + Individu_.loginInd.getName());
containerGest.addNestedContainerProperty(Gestionnaire_.siScolCentreGestion.getName() + "." + SiScolCentreGestion_.libCge.getName());
containerGest.addNestedContainerProperty(Gestionnaire_.droitProfilInd.getName() + "." + DroitProfilInd_.individu.getName() + "." + Individu_.libelleInd.getName());
containerGest.addNestedContainerProperty(Gestionnaire_.droitProfilInd.getName() + "." + DroitProfilInd_.droitProfil.getName() + "." + DroitProfil_.libProfil.getName());
centreCandidatureGestTable.setContainerDataSource(containerGest);
centreCandidatureGestTable.setVisibleColumns((Object[]) FIELDS_ORDER_GEST);
for (String fieldName : FIELDS_ORDER_GEST) {
centreCandidatureGestTable.setColumnHeader(fieldName, applicationContext.getMessage("droit." + fieldName, null, UI.getCurrent().getLocale()));
}
centreCandidatureGestTable.setSortContainerPropertyId(Gestionnaire_.droitProfilInd.getName() + "." + DroitProfilInd_.individu.getName() + "." + Individu_.loginInd.getName());
centreCandidatureGestTable.setColumnCollapsingAllowed(true);
centreCandidatureGestTable.setColumnReorderingAllowed(true);
centreCandidatureGestTable.setSelectable(true);
centreCandidatureGestTable.setImmediate(true);
centreCandidatureGestTable.addItemSetChangeListener(e -> centreCandidatureGestTable.sanitizeSelection());
centreCandidatureGestTable.addValueChangeListener(e -> {
/* Les boutons d'édition et de suppression de centreCandidature sont actifs seulement si une centreCandidature est sélectionnée. */
boolean gestIsSelected = centreCandidatureGestTable.getValue() instanceof Gestionnaire;
btnDeleteGest.setEnabled(gestIsSelected);
btnEditGest.setEnabled(gestIsSelected);
});
centreCandidatureGestTable.addItemClickListener(e -> {
if (e.isDoubleClick()) {
centreCandidatureGestTable.select(e.getItemId());
btnEditGest.click();
}
});
ctrCandGestLayout.addComponent(centreCandidatureGestTable);
ctrCandGestLayout.setExpandRatio(centreCandidatureGestTable, 1);
centreCandidatureGestTable.setSizeFull();
addComponent(ctrCandGestLayout);
setExpandRatio(ctrCandGestLayout, 2);
/* Inscrit la vue aux mises à jour de centreCandidature */
centreCandidatureEntityPusher.registerEntityPushListener(this);
}
Aggregations