Search in sources :

Example 1 with TypeDecisionCandidature

use of fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature in project esup-ecandidat by EsupPortail.

the class CandidatureController method getInformationsCandidature.

/**
 * @param  candidature
 * @return             une liste de données perso à afficher
 */
public List<SimpleTablePresentation> getInformationsCandidature(final Candidature candidature, final Boolean isCandidatOfCandidature) {
    final List<SimpleTablePresentation> liste = new ArrayList<>();
    final Formation formation = candidature.getFormation();
    final TypeDecisionCandidature typeDecision = getLastTypeDecisionCandidature(candidature);
    liste.add(new SimpleTablePresentation("candidature." + Candidature_.formation.getName() + "." + Formation_.libForm.getName(), applicationContext.getMessage("candidature." + Candidature_.formation.getName() + "." + Formation_.libForm.getName(), null, UI.getCurrent().getLocale()), formation.getLibForm()));
    final SimpleTablePresentation stpStatutDossier = new SimpleTablePresentation("candidature." + ConstanteUtils.CANDIDATURE_LIB_STATUT, applicationContext.getMessage("candidature." + ConstanteUtils.CANDIDATURE_LIB_STATUT, null, UI.getCurrent().getLocale()), i18nController.getI18nTraduction(candidature.getTypeStatut().getI18nLibTypStatut()));
    stpStatutDossier.setShortValue(candidature.getTypeStatut().getCodTypStatut());
    liste.add(stpStatutDossier);
    /* gestionnaire-->On affiche le type de traitement */
    if (!isCandidatOfCandidature) {
        String libTypTraitement = i18nController.getI18nTraduction(candidature.getTypeTraitement().getI18nLibTypTrait());
        if (candidature.getTemValidTypTraitCand()) {
            libTypTraitement = libTypTraitement + " (" + applicationContext.getMessage("valide", null, UI.getCurrent().getLocale()) + ")";
        } else {
            libTypTraitement = libTypTraitement + " (" + applicationContext.getMessage("non.valide", null, UI.getCurrent().getLocale()) + ")";
        }
        liste.add((new SimpleTablePresentation("candidature." + ConstanteUtils.CANDIDATURE_LIB_TYPE_TRAITEMENT, applicationContext.getMessage("candidature." + ConstanteUtils.CANDIDATURE_LIB_TYPE_TRAITEMENT, null, UI.getCurrent().getLocale()), libTypTraitement)));
    }
    String libTypDecision = getLibLastTypeDecisionCandidature(typeDecision, isCandidatOfCandidature);
    String commentaire = null;
    String codeTypeDecision = NomenclatureUtils.TYP_AVIS_ATTENTE;
    /* La decision n'est pas null et le candidat est candidiat avec un avis validé */
    if (typeDecision != null && (!isCandidatOfCandidature || (isCandidatOfCandidature && typeDecision.getTemValidTypeDecCand()))) {
        if (typeDecision.getTemValidTypeDecCand()) {
            if (!isCandidatOfCandidature) {
                libTypDecision = libTypDecision + " (" + applicationContext.getMessage("valide.date", new Object[] { typeDecision.getDatValidTypeDecCand() != null ? formatterDate.format(typeDecision.getDatValidTypeDecCand()) : "" }, UI.getCurrent().getLocale()) + ")";
            }
            if (candidature.getTemAcceptCand() != null && candidature.getTemAcceptCand()) {
                libTypDecision = libTypDecision + " : " + applicationContext.getMessage("candidature.confirm.label", null, UI.getCurrent().getLocale());
            } else if (candidature.getTemAcceptCand() != null && !candidature.getTemAcceptCand()) {
                libTypDecision = libTypDecision + " : " + applicationContext.getMessage("candidature.desist.label", null, UI.getCurrent().getLocale());
            }
        } else {
            libTypDecision = libTypDecision + " (" + applicationContext.getMessage("non.valide", null, UI.getCurrent().getLocale()) + ")";
        }
        if (typeDecision.getTypeDecision().getTypeAvis().equals(tableRefController.getTypeAvisPreselect())) {
            libTypDecision = libTypDecision + "<br>" + ctrCandCandidatureController.getComplementPreselectMail(typeDecision);
        }
        codeTypeDecision = typeDecision.getTypeDecision().getTypeAvis().getCodTypAvis();
        if (!isCandidatOfCandidature || typeDecision.getTypeDecision().getTemAffCommentTypDec()) {
            commentaire = typeDecision.getCommentTypeDecCand();
        }
    }
    final SimpleTablePresentation stpDecision = new SimpleTablePresentation("candidature." + ConstanteUtils.CANDIDATURE_LIB_LAST_DECISION, applicationContext.getMessage("candidature." + ConstanteUtils.CANDIDATURE_LIB_LAST_DECISION, null, UI.getCurrent().getLocale()), libTypDecision);
    stpDecision.setShortValue(codeTypeDecision);
    liste.add(stpDecision);
    /* Ajout de l'info de confirmation pour les gestionnaires */
    if (!isCandidatOfCandidature) {
        if (candidature.getTemAcceptCand() != null && candidature.getDatAcceptCand() != null && candidature.getUserAcceptCand() != null) {
            final Object[] params = new Object[] { formatterDateTime.format(candidature.getDatAcceptCand()), candidature.getUserAcceptCand() };
            String code = "candidature." + ConstanteUtils.CANDIDATURE_LIB_DESIST;
            if (candidature.getTemAcceptCand()) {
                code = "candidature." + ConstanteUtils.CANDIDATURE_LIB_CONFIRM;
            }
            liste.add((new SimpleTablePresentation(code, applicationContext.getMessage(code, null, UI.getCurrent().getLocale()), applicationContext.getMessage(code + ".val", params, UI.getCurrent().getLocale()))));
        }
    }
    /* On ajoute le commentaire lié à l'avis à la suite */
    if (commentaire != null && !commentaire.equals("")) {
        liste.add(new SimpleTablePresentation("candidature." + ConstanteUtils.CANDIDATURE_COMMENTAIRE, applicationContext.getMessage("candidature." + ConstanteUtils.CANDIDATURE_COMMENTAIRE, null, UI.getCurrent().getLocale()), commentaire));
    }
    /* gestionnaire-->On affiche le numéro OPI */
    if (!isCandidatOfCandidature) {
        String opi = applicationContext.getMessage("candidature.no.opi", null, UI.getCurrent().getLocale());
        if (candidature.getOpi() != null && candidature.getOpi().getDatPassageOpi() != null) {
            if (candidature.getOpi().getCodOpi() != null) {
                opi = candidature.getOpi().getCodOpi();
            } else {
                opi = parametreController.getPrefixeOPI() + candidature.getCandidat().getCompteMinima().getNumDossierOpiCptMin();
            }
            opi = applicationContext.getMessage("candidature.valOpi", new Object[] { opi, formatterDateTime.format(candidature.getOpi().getDatPassageOpi()) }, UI.getCurrent().getLocale());
        }
        liste.add(new SimpleTablePresentation("candidature." + ConstanteUtils.CANDIDATURE_OPI, applicationContext.getMessage("candidature." + ConstanteUtils.CANDIDATURE_OPI, null, UI.getCurrent().getLocale()), opi));
        /* Exoneration */
        if (candidature.getSiScolCatExoExt() != null) {
            liste.add(new SimpleTablePresentation("candidature." + ConstanteUtils.CANDIDATURE_EXO, applicationContext.getMessage("candidature." + ConstanteUtils.CANDIDATURE_EXO, null, UI.getCurrent().getLocale()), candidature.getSiScolCatExoExt().getDisplayLibelle()));
        }
        /* Complément Exoneration */
        if (candidature.getCompExoExtCand() != null) {
            liste.add(new SimpleTablePresentation("candidature." + ConstanteUtils.CANDIDATURE_COMP_EXO, applicationContext.getMessage("candidature." + ConstanteUtils.CANDIDATURE_COMP_EXO, null, UI.getCurrent().getLocale()), candidature.getCompExoExtCand()));
        }
    } else {
        if (candidature.getOpi() != null && candidature.getOpi().getDatPassageOpi() != null && candidature.getOpi().getCodOpi() != null) {
            liste.add(new SimpleTablePresentation("candidature." + ConstanteUtils.CANDIDATURE_ID_INS, applicationContext.getMessage("candidature." + ConstanteUtils.CANDIDATURE_ID_INS, null, UI.getCurrent().getLocale()), candidature.getOpi().getCodOpi()));
        }
    }
    /* Si montant on l'affiche */
    if (candidature.getMntChargeCand() != null) {
        liste.add(new SimpleTablePresentation("candidature." + ConstanteUtils.CANDIDATURE_MNT, applicationContext.getMessage("candidature." + ConstanteUtils.CANDIDATURE_MNT, null, UI.getCurrent().getLocale()), MethodUtils.parseBigDecimalAsString(candidature.getMntChargeCand()) + "&euro;"));
    }
    return liste;
}
Also used : SimpleTablePresentation(fr.univlorraine.ecandidat.utils.bean.presentation.SimpleTablePresentation) ArrayList(java.util.ArrayList) PDImageXObject(org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject) Formation(fr.univlorraine.ecandidat.entities.ecandidat.Formation) TypeDecisionCandidature(fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature)

Example 2 with TypeDecisionCandidature

use of fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature in project esup-ecandidat by EsupPortail.

the class CandidatureCtrCandController method saveTypeDecisionCandidature.

/**
 * Enregistre un type de decision pour une candidature
 * @param  candidature
 * @param  typeDecision
 * @return              le TypeDecision appliqué
 */
public TypeDecisionCandidature saveTypeDecisionCandidature(final Candidature candidature, final TypeDecision typeDecision, final Boolean valid, final String user, final String codAction) {
    final TypeDecisionCandidature typeDecisionCandidature = new TypeDecisionCandidature(candidature, typeDecision);
    typeDecisionCandidature.setTemValidTypeDecCand(valid);
    typeDecisionCandidature.setUserCreTypeDecCand(user);
    typeDecisionCandidature.setTemAppelTypeDecCand(false);
    if (valid) {
        typeDecisionCandidature.setDatValidTypeDecCand(LocalDateTime.now());
        typeDecisionCandidature.setUserValidTypeDecCand(user);
    }
    return typeDecisionCandidatureRepository.save(typeDecisionCandidature);
}
Also used : TypeDecisionCandidature(fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature)

Example 3 with TypeDecisionCandidature

use of fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature in project esup-ecandidat by EsupPortail.

the class CandidatureGestionController method calculRangReel.

/**
 * Recalcul le rang reel des avis en LC
 * @param  liste
 * @return       la liste des TypeDecisionCandidature
 */
public List<TypeDecisionCandidature> calculRangReel(final List<TypeDecisionCandidature> liste) {
    final List<TypeDecisionCandidature> listeTypDecRangReel = new ArrayList<>();
    int i = 1;
    for (final TypeDecisionCandidature td : liste) {
        if (td.getListCompRangReelTypDecCand() == null || !td.getListCompRangReelTypDecCand().equals(i)) {
            td.setListCompRangReelTypDecCand(i);
            final TypeDecisionCandidature tdSave = typeDecisionCandidatureRepository.save(td);
            listeTypDecRangReel.add(tdSave);
            Candidature candidature = td.getCandidature();
            candidature.setUserModCand(ConstanteUtils.AUTO_LISTE_COMP);
            candidature.setDatModCand(LocalDateTime.now());
            candidature = candidatureRepository.save(candidature);
            logger.debug("Recalcul du rang pour " + td);
        }
        i++;
    }
    return listeTypDecRangReel;
}
Also used : ArrayList(java.util.ArrayList) TypeDecisionCandidature(fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature) Candidature(fr.univlorraine.ecandidat.entities.ecandidat.Candidature) TypeDecisionCandidature(fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature)

Example 4 with TypeDecisionCandidature

use of fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature in project esup-ecandidat by EsupPortail.

the class CandidatureGestionController method candidatFirstCandidatureListComp.

/**
 * Si un candidat rejette une candidature, le premier de la liste comp est pris
 * @param formation
 */
public void candidatFirstCandidatureListComp(Formation formation) {
    formation = formationRepository.findOne(formation.getIdForm());
    final Campagne camp = campagneController.getCampagneActive();
    if (formation == null || !formation.getTemListCompForm() || formation.getTypeDecisionFavListComp() == null || camp == null) {
        return;
    }
    final List<TypeDecisionCandidature> listTypDecLc = findTypDecLc(formation, camp);
    final Optional<TypeDecisionCandidature> optTypDec = listTypDecLc.stream().findFirst();
    if (optTypDec.isPresent()) {
        final TypeDecisionCandidature td = optTypDec.get();
        Candidature candidature = td.getCandidature();
        logger.debug("Traitement liste comp. : " + candidature.getCandidat().getCompteMinima().getNumDossierOpiCptMin());
        ctrCandCandidatureController.saveTypeDecisionCandidature(candidature, formation.getTypeDecisionFavListComp(), true, ConstanteUtils.AUTO_LISTE_COMP, ConstanteUtils.TYP_DEC_CAND_ACTION_LC);
        // on la recharge
        candidature = candidatureController.loadCandidature(candidature.getIdCand());
        /* On affecte une nouvelle date de confirmation si besoin */
        final LocalDate newDateConfirm = candidatureController.getDateConfirmCandidat(formation.getDatConfirmListCompForm(), formation.getDelaiConfirmListCompForm(), null, candidatureController.getLastTypeDecisionCandidature(candidature));
        if (newDateConfirm != null) {
            candidature.setDatNewConfirmCand(newDateConfirm);
        }
        candidature.setUserModCand(ConstanteUtils.AUTO_LISTE_COMP);
        candidature.setDatModCand(LocalDateTime.now());
        candidature.setTemAcceptCand(null);
        candidature = candidatureRepository.save(candidature);
        /* On recupere le dernier avis */
        candidature.setLastTypeDecision(candidatureController.getLastTypeDecisionCandidature(candidature));
        PdfAttachement attachement = null;
        final InputStream is = candidatureController.downloadLettre(candidature, ConstanteUtils.TYP_LETTRE_MAIL, candidature.getCandidat().getLangue().getCodLangue(), false);
        if (is != null) {
            try {
                attachement = new PdfAttachement(is, candidatureController.getNomFichierLettre(candidature, ConstanteUtils.TYP_LETTRE_MAIL, candidature.getCandidat().getLangue().getCodLangue()));
            } catch (final Exception e) {
                attachement = null;
            }
        }
        mailController.sendMail(candidature.getCandidat().getCompteMinima().getMailPersoCptMin(), formation.getTypeDecisionFavListComp().getMail(), null, candidature, candidature.getCandidat().getLangue().getCodLangue(), attachement);
        /* envoi du mail à la commission */
        if (candidature.getFormation().getCommission().getTemAlertListePrincComm()) {
            mailController.sendMailByCod(candidature.getFormation().getCommission().getMailAlertComm(), NomenclatureUtils.MAIL_COMMISSION_ALERT_LISTE_PRINC, null, candidature, null);
        }
        /* On retire l'element ayant eu un avis favorable */
        listTypDecLc.remove(td);
        /* On recalcul les rang */
        if (parametreController.isCalculRangReelLc()) {
            calculRangReel(listTypDecLc);
        }
    }
}
Also used : InputStream(java.io.InputStream) PdfAttachement(fr.univlorraine.ecandidat.utils.PdfAttachement) TypeDecisionCandidature(fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature) Candidature(fr.univlorraine.ecandidat.entities.ecandidat.Candidature) Campagne(fr.univlorraine.ecandidat.entities.ecandidat.Campagne) LocalDate(java.time.LocalDate) FileException(fr.univlorraine.ecandidat.services.file.FileException) TypeDecisionCandidature(fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature)

Example 5 with TypeDecisionCandidature

use of fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature in project esup-ecandidat by EsupPortail.

the class CandidatureGestionController method calculRangLcAllFormation.

/**
 * @param batchHisto
 */
public void calculRangLcAllFormation(final BatchHisto batchHisto) {
    final Campagne camp = campagneController.getCampagneActive();
    if (camp == null) {
        return;
    }
    final List<Formation> listForm = formationRepository.findByTesFormAndTemListCompForm(true, true);
    batchController.addDescription(batchHisto, "Lancement batch de recalcul des rangs LC pour " + listForm.size() + " formations");
    final int[] cpt = { 0 };
    listForm.forEach(formation -> {
        final List<TypeDecisionCandidature> listeTdc = findTypDecLc(formation, camp);
        final int size = listeTdc.size();
        cpt[0] = cpt[0] + size;
        batchController.addDescription(batchHisto, "Batch calcul rang : formation '" + formation.getCodForm() + "', " + size + " décisions à recalculer");
        calculRangReel(listeTdc);
    });
    batchController.addDescription(batchHisto, "Fin batch de recalcul des rangs LC, recalcul terminé pour " + cpt[0] + " décisions");
}
Also used : Campagne(fr.univlorraine.ecandidat.entities.ecandidat.Campagne) Formation(fr.univlorraine.ecandidat.entities.ecandidat.Formation) TypeDecisionCandidature(fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature)

Aggregations

TypeDecisionCandidature (fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature)18 Candidature (fr.univlorraine.ecandidat.entities.ecandidat.Candidature)9 Campagne (fr.univlorraine.ecandidat.entities.ecandidat.Campagne)6 Formation (fr.univlorraine.ecandidat.entities.ecandidat.Formation)6 LocalDate (java.time.LocalDate)5 ArrayList (java.util.ArrayList)5 CentreCandidature (fr.univlorraine.ecandidat.entities.ecandidat.CentreCandidature)3 InputStream (java.io.InputStream)3 Candidat (fr.univlorraine.ecandidat.entities.ecandidat.Candidat)2 Commission (fr.univlorraine.ecandidat.entities.ecandidat.Commission)2 CompteMinima (fr.univlorraine.ecandidat.entities.ecandidat.CompteMinima)2 Opi (fr.univlorraine.ecandidat.entities.ecandidat.Opi)2 TypeTraitement (fr.univlorraine.ecandidat.entities.ecandidat.TypeTraitement)2 CriteriaBuilder (javax.persistence.criteria.CriteriaBuilder)2 CriteriaQuery (javax.persistence.criteria.CriteriaQuery)2 Predicate (javax.persistence.criteria.Predicate)2 Root (javax.persistence.criteria.Root)2 Specification (org.springframework.data.jpa.domain.Specification)2 Notification (com.vaadin.ui.Notification)1 Type (com.vaadin.ui.Notification.Type)1