Search in sources :

Example 1 with SurveyReponse

use of fr.univlorraine.ecandidat.controllers.rest.SurveyReponse in project esup-ecandidat by EsupPortail.

the class FormulaireController method getListeReponseDedoublonneCandidature.

/**
 * @param  listeReponse
 * @return              la liste dedoublonne de réponse avec la réponse max
 */
private List<SurveyReponse> getListeReponseDedoublonneCandidature(final List<SurveyReponse> listeReponse) {
    if (listeReponse == null) {
        return new ArrayList<>();
    }
    final Map<String, SurveyReponse> mapReponse = new HashMap<>();
    listeReponse.forEach(e -> {
        if (e.getIdCandidature() == null || e.getSubmitdate() == null) {
            return;
        }
        final SurveyReponse rep = mapReponse.get(e.getIdCandidature());
        if (rep == null || e.getSubmitdate().compareTo(rep.getSubmitdate()) > 0) {
            mapReponse.put(e.getIdCandidature(), e);
        }
    });
    return mapReponse.entrySet().stream().map(e -> e.getValue()).collect(Collectors.toList());
}
Also used : FormulaireCandidature(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidature) LocalDateTime(java.time.LocalDateTime) LoggerFactory(org.slf4j.LoggerFactory) UI(com.vaadin.ui.UI) LimeSurveyRest(fr.univlorraine.ecandidat.controllers.rest.LimeSurveyRest) HashMap(java.util.HashMap) FormulaireCandidaturePK(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidaturePK) Langue(fr.univlorraine.ecandidat.entities.ecandidat.Langue) ArrayList(java.util.ArrayList) InputWindow(fr.univlorraine.ecandidat.views.windows.InputWindow) Formulaire(fr.univlorraine.ecandidat.entities.ecandidat.Formulaire) CentreCandidature(fr.univlorraine.ecandidat.entities.ecandidat.CentreCandidature) NomenclatureUtils(fr.univlorraine.ecandidat.utils.NomenclatureUtils) Notification(com.vaadin.ui.Notification) CompteMinima(fr.univlorraine.ecandidat.entities.ecandidat.CompteMinima) FormulaireRepository(fr.univlorraine.ecandidat.repositories.FormulaireRepository) Map(java.util.Map) FormulaireCand(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCand) FormulaireWindow(fr.univlorraine.ecandidat.views.windows.FormulaireWindow) I18n(fr.univlorraine.ecandidat.entities.ecandidat.I18n) FormulaireCandidatureRepository(fr.univlorraine.ecandidat.repositories.FormulaireCandidatureRepository) Logger(org.slf4j.Logger) ConstanteUtils(fr.univlorraine.ecandidat.utils.ConstanteUtils) MethodUtils(fr.univlorraine.ecandidat.utils.MethodUtils) FormulaireCandRepository(fr.univlorraine.ecandidat.repositories.FormulaireCandRepository) InfoWindow(fr.univlorraine.ecandidat.views.windows.InfoWindow) Resource(javax.annotation.Resource) SurveyReponse(fr.univlorraine.ecandidat.controllers.rest.SurveyReponse) Collectors(java.util.stream.Collectors) ApplicationContext(org.springframework.context.ApplicationContext) FormulaireCandidatPK(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidatPK) List(java.util.List) Component(org.springframework.stereotype.Component) Type(com.vaadin.ui.Notification.Type) FormulaireCandidatRepository(fr.univlorraine.ecandidat.repositories.FormulaireCandidatRepository) DateTimeFormatter(java.time.format.DateTimeFormatter) Entry(java.util.Map.Entry) Candidature(fr.univlorraine.ecandidat.entities.ecandidat.Candidature) Candidat(fr.univlorraine.ecandidat.entities.ecandidat.Candidat) ConfirmWindow(fr.univlorraine.ecandidat.views.windows.ConfirmWindow) Formation(fr.univlorraine.ecandidat.entities.ecandidat.Formation) Assert(org.springframework.util.Assert) FormulaireCandidat(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidat) HashMap(java.util.HashMap) SurveyReponse(fr.univlorraine.ecandidat.controllers.rest.SurveyReponse) ArrayList(java.util.ArrayList)

Example 2 with SurveyReponse

use of fr.univlorraine.ecandidat.controllers.rest.SurveyReponse in project esup-ecandidat by EsupPortail.

the class FormulaireController method syncSurvey.

/**
 * Synchronise un formulaire
 * @param idFormulaireLimeSurvey
 */
public void syncSurvey(final Integer idFormulaireLimeSurvey) {
    logger.debug("Synchronisation formulaire " + idFormulaireLimeSurvey);
    final String codLangue = null;
    try {
        final List<SurveyReponse> listSurvey = limeSurveyRest.exportResponse(idFormulaireLimeSurvey, codLangue);
        /* Cas des formulaire rattachés à un canidat : On recherche les réponses du formulaire que l'on dedoublonne par rapport à la date de reponse */
        for (final SurveyReponse reponse : getListeReponseDedoublonneCandidat(listSurvey)) {
            if (reponse.getNumDossier() == null || reponse.getIdCandidature() != null) {
                continue;
            }
            /* Recup des info du candidat */
            final CompteMinima cptMin = candidatController.searchCptMinByNumDossier(reponse.getNumDossier());
            if (cptMin == null || cptMin.getCandidat() == null) {
                continue;
            }
            final Candidat candidat = cptMin.getCandidat();
            final FormulaireCandidatPK pk = new FormulaireCandidatPK(candidat.getIdCandidat(), idFormulaireLimeSurvey);
            LocalDateTime timeReponse;
            try {
                timeReponse = LocalDateTime.parse(reponse.getSubmitdate(), formatterDateTimeWS);
            } catch (final Exception e) {
                timeReponse = LocalDateTime.now();
            }
            /* Consitution de la réponse */
            FormulaireCandidat formulaireCandidat = formulaireCandidatRepository.findOne(pk);
            if (formulaireCandidat == null) {
                formulaireCandidat = new FormulaireCandidat();
                formulaireCandidat.setId(pk);
                formulaireCandidat.setCandidat(candidat);
                formulaireCandidat.setReponsesFormulaireCandidat(getTextReponseSurvey(reponse.getMapReponses()));
                formulaireCandidat.setDatReponseFormulaireCandidat(timeReponse);
                logger.debug("Enr. reponse formulaire candidat : " + formulaireCandidat);
                formulaireCandidatRepository.save(formulaireCandidat);
            } else if (timeReponse.isAfter(formulaireCandidat.getDatReponseFormulaireCandidat())) {
                formulaireCandidat.setReponsesFormulaireCandidat(getTextReponseSurvey(reponse.getMapReponses()));
                formulaireCandidat.setDatReponseFormulaireCandidat(timeReponse);
                logger.debug("Enr. reponse formulaire candidat : " + formulaireCandidat);
                formulaireCandidatRepository.save(formulaireCandidat);
            }
        }
        /* Cas des formulaire rattachés à une candidature : On recherche les réponses du formulaire que l'on dedoublonne par rapport à la date de reponse */
        for (final SurveyReponse reponse : getListeReponseDedoublonneCandidature(listSurvey)) {
            if (!MethodUtils.isInteger(reponse.getIdCandidature())) {
                continue;
            }
            /* Recup des info de la candidature */
            final Candidature cand = candidatureController.loadCandidature(Integer.valueOf(reponse.getIdCandidature()));
            if (cand == null) {
                continue;
            }
            final FormulaireCandidaturePK pk = new FormulaireCandidaturePK(cand.getIdCand(), idFormulaireLimeSurvey);
            LocalDateTime timeReponse;
            try {
                timeReponse = LocalDateTime.parse(reponse.getSubmitdate(), formatterDateTimeWS);
            } catch (final Exception e) {
                timeReponse = LocalDateTime.now();
            }
            /* Consitution de la réponse */
            FormulaireCandidature formulaireCand = formulaireCandidatureRepository.findOne(pk);
            if (formulaireCand == null) {
                formulaireCand = new FormulaireCandidature();
                formulaireCand.setId(pk);
                formulaireCand.setCandidature(cand);
                formulaireCand.setReponsesFormulaireCand(getTextReponseSurvey(reponse.getMapReponses()));
                formulaireCand.setDatReponseFormulaireCand(timeReponse);
                logger.debug("Enr. reponse formulaire candidature : " + formulaireCand);
                formulaireCandidatureRepository.save(formulaireCand);
            } else if (timeReponse.isAfter(formulaireCand.getDatReponseFormulaireCand())) {
                formulaireCand.setReponsesFormulaireCand(getTextReponseSurvey(reponse.getMapReponses()));
                formulaireCand.setDatReponseFormulaireCand(timeReponse);
                logger.debug("Enr. reponse formulaire candidature : " + formulaireCand);
                formulaireCandidatureRepository.save(formulaireCand);
            }
        }
    } catch (final Exception e) {
        logger.error("Erreur WebService LimeSurvey (idFormulaireLimeSurvey=" + idFormulaireLimeSurvey + ")", e);
        return;
    }
}
Also used : CompteMinima(fr.univlorraine.ecandidat.entities.ecandidat.CompteMinima) Candidat(fr.univlorraine.ecandidat.entities.ecandidat.Candidat) FormulaireCandidat(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidat) LocalDateTime(java.time.LocalDateTime) FormulaireCandidatPK(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidatPK) SurveyReponse(fr.univlorraine.ecandidat.controllers.rest.SurveyReponse) FormulaireCandidaturePK(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidaturePK) FormulaireCandidature(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidature) CentreCandidature(fr.univlorraine.ecandidat.entities.ecandidat.CentreCandidature) Candidature(fr.univlorraine.ecandidat.entities.ecandidat.Candidature) FormulaireCandidat(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidat) FormulaireCandidature(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidature)

Example 3 with SurveyReponse

use of fr.univlorraine.ecandidat.controllers.rest.SurveyReponse in project esup-ecandidat by EsupPortail.

the class FormulaireController method getListeReponseDedoublonneCandidat.

/**
 * @param  listeReponse
 * @return              la liste dedoublonne de réponse avec la réponse max
 */
private List<SurveyReponse> getListeReponseDedoublonneCandidat(final List<SurveyReponse> listeReponse) {
    if (listeReponse == null) {
        return new ArrayList<>();
    }
    final Map<String, SurveyReponse> mapReponse = new HashMap<>();
    listeReponse.forEach(e -> {
        if (e.getNumDossier() == null || e.getSubmitdate() == null) {
            return;
        }
        final SurveyReponse rep = mapReponse.get(e.getNumDossier());
        if (rep == null || e.getSubmitdate().compareTo(rep.getSubmitdate()) > 0) {
            mapReponse.put(e.getNumDossier(), e);
        }
    });
    return mapReponse.entrySet().stream().map(e -> e.getValue()).collect(Collectors.toList());
}
Also used : FormulaireCandidature(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidature) LocalDateTime(java.time.LocalDateTime) LoggerFactory(org.slf4j.LoggerFactory) UI(com.vaadin.ui.UI) LimeSurveyRest(fr.univlorraine.ecandidat.controllers.rest.LimeSurveyRest) HashMap(java.util.HashMap) FormulaireCandidaturePK(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidaturePK) Langue(fr.univlorraine.ecandidat.entities.ecandidat.Langue) ArrayList(java.util.ArrayList) InputWindow(fr.univlorraine.ecandidat.views.windows.InputWindow) Formulaire(fr.univlorraine.ecandidat.entities.ecandidat.Formulaire) CentreCandidature(fr.univlorraine.ecandidat.entities.ecandidat.CentreCandidature) NomenclatureUtils(fr.univlorraine.ecandidat.utils.NomenclatureUtils) Notification(com.vaadin.ui.Notification) CompteMinima(fr.univlorraine.ecandidat.entities.ecandidat.CompteMinima) FormulaireRepository(fr.univlorraine.ecandidat.repositories.FormulaireRepository) Map(java.util.Map) FormulaireCand(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCand) FormulaireWindow(fr.univlorraine.ecandidat.views.windows.FormulaireWindow) I18n(fr.univlorraine.ecandidat.entities.ecandidat.I18n) FormulaireCandidatureRepository(fr.univlorraine.ecandidat.repositories.FormulaireCandidatureRepository) Logger(org.slf4j.Logger) ConstanteUtils(fr.univlorraine.ecandidat.utils.ConstanteUtils) MethodUtils(fr.univlorraine.ecandidat.utils.MethodUtils) FormulaireCandRepository(fr.univlorraine.ecandidat.repositories.FormulaireCandRepository) InfoWindow(fr.univlorraine.ecandidat.views.windows.InfoWindow) Resource(javax.annotation.Resource) SurveyReponse(fr.univlorraine.ecandidat.controllers.rest.SurveyReponse) Collectors(java.util.stream.Collectors) ApplicationContext(org.springframework.context.ApplicationContext) FormulaireCandidatPK(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidatPK) List(java.util.List) Component(org.springframework.stereotype.Component) Type(com.vaadin.ui.Notification.Type) FormulaireCandidatRepository(fr.univlorraine.ecandidat.repositories.FormulaireCandidatRepository) DateTimeFormatter(java.time.format.DateTimeFormatter) Entry(java.util.Map.Entry) Candidature(fr.univlorraine.ecandidat.entities.ecandidat.Candidature) Candidat(fr.univlorraine.ecandidat.entities.ecandidat.Candidat) ConfirmWindow(fr.univlorraine.ecandidat.views.windows.ConfirmWindow) Formation(fr.univlorraine.ecandidat.entities.ecandidat.Formation) Assert(org.springframework.util.Assert) FormulaireCandidat(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidat) HashMap(java.util.HashMap) SurveyReponse(fr.univlorraine.ecandidat.controllers.rest.SurveyReponse) ArrayList(java.util.ArrayList)

Example 4 with SurveyReponse

use of fr.univlorraine.ecandidat.controllers.rest.SurveyReponse in project esup-ecandidat by EsupPortail.

the class FormulaireController method testConnexionLS.

/**
 * Teste la connexion à LimeSurvey
 */
public void testConnexionLS() {
    final InputWindow inputWindow = new InputWindow(applicationContext.getMessage("version.ls.message", null, UI.getCurrent().getLocale()), applicationContext.getMessage("version.ls.title", null, UI.getCurrent().getLocale()), false, 15);
    inputWindow.addBtnOkListener(text -> {
        if (text instanceof String && !text.isEmpty()) {
            if (text != null) {
                try {
                    final Integer idForm = Integer.valueOf(text);
                    final List<SurveyReponse> listeReponse = getListeReponseDedoublonneCandidat(limeSurveyRest.exportResponse(idForm, "fr"));
                    final StringBuilder sb = new StringBuilder();
                    sb.append("<b>" + applicationContext.getMessage("version.ls.resultTxt", new Object[] { listeReponse.size() }, UI.getCurrent().getLocale()) + "</b>");
                    sb.append("<br><br>");
                    listeReponse.forEach(e -> {
                        sb.append("<b>NumDossier : " + e.getNumDossier() + ", date : " + e.getDatestamp() + "</b><br>");
                        if (e.getMapReponses() != null) {
                            for (final Entry<String, Object> entry : e.getMapReponses().entrySet()) {
                                sb.append(entry.getKey() + " : " + entry.getValue() + "<br>");
                            }
                        }
                        sb.append("<br>");
                    });
                    UI.getCurrent().addWindow(new InfoWindow(applicationContext.getMessage("version.ls.result", null, UI.getCurrent().getLocale()), sb.toString(), 500, 40));
                } catch (final Exception e) {
                    Notification.show(applicationContext.getMessage("version.ls.error", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE);
                }
            }
        }
    });
    UI.getCurrent().addWindow(inputWindow);
}
Also used : SurveyReponse(fr.univlorraine.ecandidat.controllers.rest.SurveyReponse) InputWindow(fr.univlorraine.ecandidat.views.windows.InputWindow) InfoWindow(fr.univlorraine.ecandidat.views.windows.InfoWindow)

Aggregations

SurveyReponse (fr.univlorraine.ecandidat.controllers.rest.SurveyReponse)4 Candidat (fr.univlorraine.ecandidat.entities.ecandidat.Candidat)3 Candidature (fr.univlorraine.ecandidat.entities.ecandidat.Candidature)3 CentreCandidature (fr.univlorraine.ecandidat.entities.ecandidat.CentreCandidature)3 CompteMinima (fr.univlorraine.ecandidat.entities.ecandidat.CompteMinima)3 FormulaireCandidat (fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidat)3 FormulaireCandidatPK (fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidatPK)3 FormulaireCandidature (fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidature)3 FormulaireCandidaturePK (fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidaturePK)3 InfoWindow (fr.univlorraine.ecandidat.views.windows.InfoWindow)3 InputWindow (fr.univlorraine.ecandidat.views.windows.InputWindow)3 LocalDateTime (java.time.LocalDateTime)3 Notification (com.vaadin.ui.Notification)2 Type (com.vaadin.ui.Notification.Type)2 UI (com.vaadin.ui.UI)2 LimeSurveyRest (fr.univlorraine.ecandidat.controllers.rest.LimeSurveyRest)2 Formation (fr.univlorraine.ecandidat.entities.ecandidat.Formation)2 Formulaire (fr.univlorraine.ecandidat.entities.ecandidat.Formulaire)2 FormulaireCand (fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCand)2 I18n (fr.univlorraine.ecandidat.entities.ecandidat.I18n)2