use of fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilFonc in project esup-ecandidat by EsupPortail.
the class MainUI method buildMenuCtrCand.
/**
* Construit le menu centre de candidature
*/
private void buildMenuCtrCand(final Authentication auth) {
itemMenuCtrCand.removeAllButtons();
viewAccordionCtrCand.forEach((key, value) -> {
viewButtons.remove(key);
viewAccordion.remove(key);
});
viewAccordionCtrCand.clear();
final SecurityCentreCandidature centreCandidature = userController.getCentreCandidature(auth);
if (centreCandidature != null) {
idCtrCandEnCours = centreCandidature.getIdCtrCand();
final OneClickButton ctrCandBtn = constructCtrCandChangeBtn(centreCandidature.getLibCtrCand());
ctrCandBtn.setDescription(applicationContext.getMessage("ctrCand.window.change", new Object[] { centreCandidature.getLibCtrCand() }, getLocale()));
itemMenuCtrCand.addButton(ctrCandBtn);
final Boolean isScolCentrale = userController.isScolCentrale(auth);
final List<DroitProfilFonc> listFonctionnalite = centreCandidature.getListFonctionnalite();
if (hasAccessToFonctionnalite(isScolCentrale, listFonctionnalite, NomenclatureUtils.FONCTIONNALITE_PARAM)) {
final LinkedList<SubMenu> subMenuParam = new LinkedList<>();
subMenuParam.add(new SubMenu(CtrCandParametreView.NAME, FontAwesome.COG));
subMenuParam.add(new SubMenu(CtrCandTagView.NAME, FontAwesome.TAGS));
addItemMenu(applicationContext.getMessage("param.menus.title", null, getLocale()), CtrCandStatFormView.NAME, FontAwesome.COGS, subMenuParam, itemMenuCtrCand);
viewAccordionCtrCand.put(CtrCandParametreView.NAME, (String) itemMenuCtrCand.getData());
viewAccordionCtrCand.put(CtrCandTagView.NAME, (String) itemMenuCtrCand.getData());
}
/* Stats */
if (hasAccessToFonctionnalite(isScolCentrale, listFonctionnalite, NomenclatureUtils.FONCTIONNALITE_STATS)) {
final LinkedList<SubMenu> subMenuStats = new LinkedList<>();
subMenuStats.add(new SubMenu(CtrCandStatFormView.NAME, FontAwesome.BAR_CHART));
subMenuStats.add(new SubMenu(CtrCandStatCommView.NAME, FontAwesome.PIE_CHART));
addItemMenu(applicationContext.getMessage("stat.menus.title", null, getLocale()), CtrCandStatFormView.NAME, FontAwesome.LINE_CHART, subMenuStats, itemMenuCtrCand);
viewAccordionCtrCand.put(CtrCandStatFormView.NAME, (String) itemMenuCtrCand.getData());
viewAccordionCtrCand.put(CtrCandStatCommView.NAME, (String) itemMenuCtrCand.getData());
}
/* Paramétrage CC */
if (userController.isMenuParamCCOpen(idCtrCandEnCours) && hasAccessToFonctionnalite(isScolCentrale, listFonctionnalite, NomenclatureUtils.FONCTIONNALITE_GEST_PARAM_CC)) {
final LinkedList<SubMenu> subMenuParamCC = new LinkedList<>();
subMenuParamCC.add(new SubMenu(CtrCandMailTypeDecView.NAME, FontAwesome.ENVELOPE));
subMenuParamCC.add(new SubMenu(CtrCandTypeDecisionView.NAME, FontAwesome.GAVEL));
subMenuParamCC.add(new SubMenu(CtrCandMotivAvisView.NAME, FontAwesome.BALANCE_SCALE));
addItemMenu(applicationContext.getMessage("paramDecision.menus.title", null, getLocale()), CtrCandTypeDecisionView.NAME, FontAwesome.GAVEL, subMenuParamCC, itemMenuCtrCand);
viewAccordionCtrCand.put(CtrCandMailTypeDecView.NAME, (String) itemMenuCtrCand.getData());
viewAccordionCtrCand.put(CtrCandTypeDecisionView.NAME, (String) itemMenuCtrCand.getData());
viewAccordionCtrCand.put(CtrCandMotivAvisView.NAME, (String) itemMenuCtrCand.getData());
}
/* Commission */
if (hasAccessToFonctionnalite(isScolCentrale, listFonctionnalite, NomenclatureUtils.FONCTIONNALITE_GEST_COMMISSION)) {
addItemMenu(applicationContext.getMessage(CtrCandCommissionView.NAME + ".title", null, getLocale()), CtrCandCommissionView.NAME, FontAwesome.CALENDAR, null, itemMenuCtrCand);
viewAccordionCtrCand.put(CtrCandCommissionView.NAME, (String) itemMenuCtrCand.getData());
}
/* PJ */
if (hasAccessToFonctionnalite(isScolCentrale, listFonctionnalite, NomenclatureUtils.FONCTIONNALITE_GEST_PJ)) {
final LinkedList<SubMenu> subMenuPj = new LinkedList<>();
subMenuPj.add(new SubMenu(CtrCandPieceJustifView.NAME, FontAwesome.FILE_TEXT_O));
subMenuPj.add(new SubMenu(CtrCandPieceJustifCommunView.NAME, FontAwesome.FILES_O));
addItemMenu(applicationContext.getMessage(CtrCandPieceJustifView.NAME + ".title", null, getLocale()), CtrCandPieceJustifView.NAME, FontAwesome.FILE_TEXT_O, subMenuPj, itemMenuCtrCand);
viewAccordionCtrCand.put(CtrCandPieceJustifView.NAME, (String) itemMenuCtrCand.getData());
viewAccordionCtrCand.put(CtrCandPieceJustifCommunView.NAME, (String) itemMenuCtrCand.getData());
}
/* Formulaires */
if (hasAccessToFonctionnalite(isScolCentrale, listFonctionnalite, NomenclatureUtils.FONCTIONNALITE_GEST_FORMULAIRE)) {
final LinkedList<SubMenu> subMenuForm = new LinkedList<>();
subMenuForm.add(new SubMenu(CtrCandFormulaireView.NAME, FontAwesome.FILE_ZIP_O));
subMenuForm.add(new SubMenu(CtrCandFormulaireCommunView.NAME, FontAwesome.FILES_O));
addItemMenu(applicationContext.getMessage(CtrCandFormulaireView.NAME + ".title", null, getLocale()), CtrCandFormulaireView.NAME, FontAwesome.FILE_ZIP_O, subMenuForm, itemMenuCtrCand);
viewAccordionCtrCand.put(CtrCandFormulaireView.NAME, (String) itemMenuCtrCand.getData());
viewAccordionCtrCand.put(CtrCandFormulaireCommunView.NAME, (String) itemMenuCtrCand.getData());
}
/* Formation */
if (hasAccessToFonctionnalite(isScolCentrale, listFonctionnalite, NomenclatureUtils.FONCTIONNALITE_GEST_FORMATION)) {
addItemMenu(applicationContext.getMessage(CtrCandFormationView.NAME + ".title", null, getLocale()), CtrCandFormationView.NAME, FontAwesome.LEAF, null, itemMenuCtrCand);
viewAccordionCtrCand.put(CtrCandFormationView.NAME, (String) itemMenuCtrCand.getData());
}
/* Candidatures */
if (hasAccessToFonctionnalite(isScolCentrale, listFonctionnalite, NomenclatureUtils.FONCTIONNALITE_GEST_CANDIDATURE)) {
final LinkedList<SubMenu> subMenuCandidatures = new LinkedList<>();
subMenuCandidatures.add(new SubMenu(CtrCandCandidatureView.NAME, FontAwesome.BRIEFCASE));
subMenuCandidatures.add(new SubMenu(CtrCandCandidatureCanceledView.NAME, FontAwesome.WARNING));
subMenuCandidatures.add(new SubMenu(CtrCandCandidatureArchivedView.NAME, FontAwesome.FOLDER_OPEN));
addItemMenu(applicationContext.getMessage(CtrCandCandidatureView.NAME + ".title", null, getLocale()), CtrCandCandidatureView.NAME, FontAwesome.BRIEFCASE, subMenuCandidatures, itemMenuCtrCand);
viewAccordionCtrCand.put(CtrCandCandidatureView.NAME, (String) itemMenuCtrCand.getData());
viewAccordionCtrCand.put(CtrCandCandidatureCanceledView.NAME, (String) itemMenuCtrCand.getData());
viewAccordionCtrCand.put(CtrCandCandidatureArchivedView.NAME, (String) itemMenuCtrCand.getData());
/* L'utilisateur a accès aux ecran de candidature-->on ajoute les css */
initAlertSva();
}
} else {
final OneClickButton ctrCandBtn = constructCtrCandChangeBtn(applicationContext.getMessage("ctrCand.window.change.default", null, getLocale()));
itemMenuCtrCand.addButton(ctrCandBtn);
}
}
use of fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilFonc in project esup-ecandidat by EsupPortail.
the class DroitProfilController method saveDroitProfil.
/**
* Enregistre un droit profil
*
* @param droitProfil
* @param fonctionnaliteMap
*/
public void saveDroitProfil(final DroitProfil droitProfil, final HashMap<DroitFonctionnalite, Boolean> fonctionnaliteMap) {
Assert.notNull(droitProfil, applicationContext.getMessage("assert.notNull", null, UI.getCurrent().getLocale()));
/* Verrou */
if (droitProfil.getIdProfil() != null && !lockController.getLockOrNotify(droitProfil, null)) {
return;
}
final DroitProfil droitProfilSaved = droitProfilRepository.saveAndFlush(droitProfil);
droitProfilSaved.getDroitProfilFoncs().clear();
fonctionnaliteMap.forEach((k, v) -> droitProfilSaved.addFonctionnalite(new DroitProfilFonc(k, droitProfilSaved, v)));
/* on met a jour la date pour que l'entity soit push */
droitProfilSaved.setDatModProfil(LocalDateTime.now());
droitProfilRepository.saveAndFlush(droitProfilSaved);
lockController.releaseLock(droitProfilSaved);
}
use of fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilFonc in project esup-ecandidat by EsupPortail.
the class NomenclatureController method majDroitProfilFonc.
/**
* Met à jour la liste des fonctionnalités
* @param droitProfil
* @param droitFonctionnalite
*/
private void majDroitProfilFonc(final DroitProfil droitProfilCtrCand, final DroitProfil droitProfilCommission, DroitFonctionnalite droitFonctionnalite) {
droitFonctionnalite = droitFonctionnaliteRepository.saveAndFlush(droitFonctionnalite);
if (droitProfilCommission != null && droitFonctionnalite.getTemOpenComFonc()) {
droitProfilCommission.addFonctionnalite(new DroitProfilFonc(droitFonctionnalite, droitProfilCommission, true));
droitProfilRepository.saveAndFlush(droitProfilCommission);
}
droitProfilCtrCand.addFonctionnalite(new DroitProfilFonc(droitFonctionnalite, droitProfilCtrCand, false));
droitProfilRepository.saveAndFlush(droitProfilCtrCand);
}
use of fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilFonc in project esup-ecandidat by EsupPortail.
the class DroitProfilController method getCandidatureFonctionnalite.
/**
* @param typGestionCandidature
* @param candidature
* @return les fonctionnalites dont l'utilisateur a le droit pour une candidature
*/
public List<DroitFonctionnalite> getCandidatureFonctionnalite(final String typGestionCandidature, final Candidature candidature) {
Authentication auth = userController.getCurrentAuthentication();
/* Ce sera la liste d'action a renvoyer */
List<DroitFonctionnalite> listeFoncToRet = new ArrayList<>();
if ((userController.isGestionnaireCandidat(auth) || userController.isGestionnaireCandidatLS(auth))) {
listeFoncToRet.add(new DroitFonctionnalite(NomenclatureUtils.FONCTIONNALITE_OPEN_CANDIDAT, applicationContext.getMessage("candidature.action.open", null, UI.getCurrent().getLocale()), 0, true));
}
/* Utilisateur ScolCentrale, on ajoute toutes les fonctionnalités */
if (userController.isScolCentrale(auth)) {
List<DroitFonctionnalite> listeFonc = cacheController.getListeDroitFonctionnaliteCandidature();
/* On place tout les éléments en ecriture */
listeFonc.forEach(e -> listeFoncToRet.add(new DroitFonctionnalite(e, false)));
} else {
List<DroitProfilFonc> listFonctionnalite = new ArrayList<>();
/* On provient du menu centre de candidature-->on a accès au droits du profil du centre de candidature */
if (MethodUtils.isGestionCandidatureCtrCand(typGestionCandidature)) {
SecurityCentreCandidature scc = userController.getCentreCandidature(auth);
if (scc != null) {
listFonctionnalite = scc.getListFonctionnalite();
}
} else /* On provient du menu commission-->on a accès au droits du profil de la commission */
if (MethodUtils.isGestionCandidatureCommission(typGestionCandidature)) {
SecurityCommission sc = userController.getCommission(auth);
if (sc != null) {
listFonctionnalite = sc.getListFonctionnalite();
}
} else /* On provient du menu candidat-->on a accès au droits du profil de la commission et du centre de candidature */
if (MethodUtils.isGestionCandidatureCandidat(typGestionCandidature)) {
SecurityCentreCandidature scc = userController.getCentreCandidature(auth);
if (scc != null && candidature != null && (scc.getIsGestAllCommission() || MethodUtils.isIdInListId(candidature.getFormation().getCommission().getIdComm(), scc.getListeIdCommission()))) {
listFonctionnalite.addAll(scc.getListFonctionnalite());
}
SecurityCommission sc = userController.getCommission(auth);
if (sc != null && candidature != null && sc.getIdComm().equals(candidature.getFormation().getCommission().getIdComm())) {
listFonctionnalite.addAll(sc.getListFonctionnalite());
}
/* Il faut eviter les doublons et prendre les fonctionnalités en ecriture prioritairement-->on trie sur le temoin pour passer les readonly en dernier */
listFonctionnalite.sort((d1, d2) -> d1.getTemReadOnly().compareTo(d2.getTemReadOnly()));
}
/* On traite la liste-->dédoublon + gestion du read only */
listFonctionnalite.stream().filter(e -> e.getDroitFonctionnalite().getTemActionCandFonc() && (!e.getTemReadOnly() || (e.getTemReadOnly() && e.getDroitFonctionnalite().getCodFonc().equals(NomenclatureUtils.FONCTIONNALITE_GEST_POST_IT)) || (e.getTemReadOnly() && e.getDroitFonctionnalite().getCodFonc().equals(NomenclatureUtils.FONCTIONNALITE_VISU_HISTO_AVIS)))).forEach(f -> {
listeFoncToRet.add(new DroitFonctionnalite(f.getDroitFonctionnalite(), f.getTemReadOnly()));
});
}
/* On trie et on envoie */
listeFoncToRet.sort((d1, d2) -> d1.getOrderFonc().compareTo(d2.getOrderFonc()));
return listeFoncToRet.stream().distinct().collect(Collectors.toList());
}
use of fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilFonc in project esup-ecandidat by EsupPortail.
the class ScolDroitProfilView method init.
/**
* Initialise la vue
*/
@PostConstruct
public void init() {
/* Style */
setSizeFull();
setMargin(true);
setSpacing(true);
/* Titre */
Label title = new Label(applicationContext.getMessage("droitprofil.title", null, UI.getCurrent().getLocale()));
title.addStyleName(StyleConstants.VIEW_TITLE);
addComponent(title);
/* Boutons */
HorizontalLayout buttonsLayout = new HorizontalLayout();
buttonsLayout.setWidth(100, Unit.PERCENTAGE);
buttonsLayout.setSpacing(true);
addComponent(buttonsLayout);
HorizontalLayout leftButtonsLayout = new HorizontalLayout();
leftButtonsLayout.setSpacing(true);
buttonsLayout.addComponent(leftButtonsLayout);
buttonsLayout.setComponentAlignment(leftButtonsLayout, Alignment.MIDDLE_LEFT);
btnNouveauProfil.setCaption(applicationContext.getMessage("droitprofil.btnNouveau", null, UI.getCurrent().getLocale()));
btnNouveauProfil.addClickListener(e -> droitProfilController.editNewDroitProfil());
leftButtonsLayout.addComponent(btnNouveauProfil);
btnEditProfil.setCaption(applicationContext.getMessage("btnEdit", null, UI.getCurrent().getLocale()));
btnEditProfil.setEnabled(false);
btnEditProfil.addClickListener(e -> {
if (droitProfilTable.getValue() instanceof DroitProfil) {
droitProfilController.editDroitProfil((DroitProfil) droitProfilTable.getValue());
}
});
buttonsLayout.addComponent(btnEditProfil);
buttonsLayout.setComponentAlignment(btnEditProfil, Alignment.MIDDLE_CENTER);
btnSupprimerProfil.setCaption(applicationContext.getMessage("btnDelete", null, UI.getCurrent().getLocale()));
btnSupprimerProfil.setEnabled(false);
btnSupprimerProfil.addClickListener(e -> {
if (droitProfilTable.getValue() instanceof DroitProfil) {
droitProfilController.deleteDroitProfil((DroitProfil) droitProfilTable.getValue());
}
});
buttonsLayout.addComponent(btnSupprimerProfil);
buttonsLayout.setComponentAlignment(btnSupprimerProfil, Alignment.MIDDLE_RIGHT);
/* Table des batchs */
droitProfilTable.addGeneratedColumn("fonctionnalite", new ColumnGenerator() {
/**
* serialVersionUID
*/
private static final long serialVersionUID = 7461290324017459118L;
@Override
public Object generateCell(Table source, Object itemId, Object columnId) {
final DroitProfil profil = (DroitProfil) itemId;
if (profil.getCodProfil().equals(NomenclatureUtils.DROIT_PROFIL_ADMIN)) {
return applicationContext.getMessage("droitprofil.descriptif.admin", null, UI.getCurrent().getLocale());
} else if (profil.getCodProfil().equals(NomenclatureUtils.DROIT_PROFIL_SCOL_CENTRALE)) {
return applicationContext.getMessage("droitprofil.descriptif.scol", null, UI.getCurrent().getLocale());
}
String fonc = "";
for (DroitProfilFonc droit : profil.getDroitProfilFoncs()) {
fonc += droit.getDroitFonctionnalite().getLibFonc();
if (droit.getTemReadOnly()) {
fonc += " (LS)";
}
fonc += ", ";
}
if (!fonc.equals("")) {
fonc = fonc.substring(0, fonc.length() - 2);
}
return new Label(fonc);
}
});
droitProfilTable.setSizeFull();
droitProfilTable.setVisibleColumns((Object[]) DROIT_PROFIL_FIELDS_ORDER);
for (String fieldName : DROIT_PROFIL_FIELDS_ORDER) {
droitProfilTable.setColumnHeader(fieldName, applicationContext.getMessage("droitprofil.table." + fieldName, null, UI.getCurrent().getLocale()));
}
droitProfilTable.setSortContainerPropertyId(DroitProfil_.codProfil.getName());
droitProfilTable.setColumnCollapsingAllowed(true);
droitProfilTable.setColumnReorderingAllowed(true);
droitProfilTable.setSelectable(true);
droitProfilTable.setImmediate(true);
droitProfilTable.addItemSetChangeListener(e -> droitProfilTable.sanitizeSelection());
droitProfilTable.addValueChangeListener(e -> {
/* Les boutons d'édition, de programme et de lancement de batch sont actifs seulement si un droit est sélectionné. */
boolean droitIsSelected = droitProfilTable.getValue() instanceof DroitProfil && ((DroitProfil) droitProfilTable.getValue()).getTemUpdatable();
btnEditProfil.setEnabled(droitIsSelected);
btnSupprimerProfil.setEnabled(droitIsSelected);
});
droitProfilTable.addItemClickListener(e -> {
if (e.isDoubleClick() && droitProfilTable.getValue() instanceof DroitProfil && ((DroitProfil) droitProfilTable.getValue()).getTemUpdatable()) {
droitProfilTable.select(e.getItemId());
btnEditProfil.click();
}
});
addComponent(droitProfilTable);
setExpandRatio(droitProfilTable, 1);
/* Inscrit la vue aux mises à jour de droitProfil */
droitProfilEntityPusher.registerEntityPushListener(this);
}
Aggregations