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());
}
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;
}
}
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());
}
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);
}
Aggregations