use of fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidat in project esup-ecandidat by EsupPortail.
the class CandidaturePieceController method getFormulaireCandidature.
/**
* @param candidature
* @return la liste des formulaires d'une candidature
*/
public List<FormulairePresentation> getFormulaireCandidature(final Candidature candidature) {
final String numDossier = candidature.getCandidat().getCompteMinima().getNumDossierOpiCptMin();
final List<FormulairePresentation> liste = new ArrayList<>();
final TypeStatutPiece statutAT = tableRefController.getTypeStatutPieceAttente();
final TypeStatutPiece statutNC = tableRefController.getTypeStatutPieceNonConcerne();
final TypeStatutPiece statutTR = tableRefController.getTypeStatutPieceTransmis();
final List<FormulaireCand> listeFormulaireCand = candidature.getFormulaireCands();
final List<FormulaireCandidature> listeFormulaireCandidature = candidature.getFormulaireCandidatures();
final List<FormulaireCandidat> listeFormulaireCandidat = candidature.getCandidat().getFormulaireCandidats();
formulaireController.getFormulaireForCandidature(candidature).forEach(e -> {
final String libForm = i18nController.getI18nTraduction(e.getI18nLibFormulaire());
String urlForm = i18nController.getI18nTraduction(e.getI18nUrlFormulaire());
/* Possibilité d'ajout du numdossier dans l'url sous la forme ${numDossier} */
if (urlForm != null) {
urlForm = urlForm.replaceAll(ConstanteUtils.VAR_REGEX_FORM_NUM_DOSSIER, numDossier);
urlForm = urlForm.replaceAll(ConstanteUtils.VAR_REGEX_FORM_NUM_DOSSIER_OLD, numDossier);
urlForm = urlForm.replaceAll(ConstanteUtils.VAR_REGEX_FORM_ID_CANDIDATURE, String.valueOf(candidature.getIdCand()));
}
String libStatut = null;
String codStatut = null;
String reponses = null;
/* On recherche d'abord les réponses */
final FormulaireCandidature formulaireCandidature = getFormulaireCandidatureFromList(e, listeFormulaireCandidature);
final FormulaireCandidat formulaireCandidat = getFormulaireCandidatFromList(e, listeFormulaireCandidat);
if (formulaireCandidature != null) {
codStatut = statutTR.getCodTypStatutPiece();
libStatut = i18nController.getI18nTraduction(statutTR.getI18nLibTypStatutPiece());
reponses = formulaireCandidature.getReponsesFormulaireCand();
} else if (formulaireCandidat != null) {
codStatut = statutTR.getCodTypStatutPiece();
libStatut = i18nController.getI18nTraduction(statutTR.getI18nLibTypStatutPiece());
reponses = formulaireCandidat.getReponsesFormulaireCandidat();
} else {
/* Si pas de réponse on recherche une ligne dans formulaireCand pour vérifier
* qu'il est concerné */
final FormulaireCand formulaireCand = getFormulaireCandFromList(e, listeFormulaireCand);
if (formulaireCand != null) {
codStatut = statutNC.getCodTypStatutPiece();
libStatut = i18nController.getI18nTraduction(statutNC.getI18nLibTypStatutPiece());
} else {
/* Ni de réponse, ni non concerné --> en attente */
codStatut = statutAT.getCodTypStatutPiece();
libStatut = i18nController.getI18nTraduction(statutAT.getI18nLibTypStatutPiece());
}
}
liste.add(new FormulairePresentation(e, libForm, urlForm, codStatut, libStatut, e.getTemConditionnelFormulaire(), reponses));
});
return liste;
}
use of fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidat 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.entities.ecandidat.FormulaireCandidat in project esup-ecandidat by EsupPortail.
the class CandidatureCtrCandController method getDatModPjForm.
/**
* calcul la derniere modif de statut de PJ ou Formulaire
* @param candidature
* @param formatter
* @return la date de derniere modif
*/
private String getDatModPjForm(final Candidature candidature) {
LocalDateTime dateMod = null;
final Optional<FormulaireCand> formOpt = candidature.getFormulaireCands().stream().filter(e -> e.getDatModFormulaireCand() != null).sorted((e1, e2) -> (e2.getDatModFormulaireCand().compareTo(e1.getDatModFormulaireCand()))).findFirst();
final Optional<FormulaireCandidat> formCandidatOpt = candidature.getCandidat().getFormulaireCandidats().stream().filter(e -> e.getDatReponseFormulaireCandidat() != null).sorted((e1, e2) -> (e2.getDatReponseFormulaireCandidat().compareTo(e1.getDatReponseFormulaireCandidat()))).findFirst();
final Optional<PjCand> pjOpt = candidature.getPjCands().stream().filter(e -> e.getDatModStatutPjCand() != null).sorted((e1, e2) -> (e2.getDatModStatutPjCand().compareTo(e1.getDatModStatutPjCand()))).findFirst();
/* On prend la derniere modif des formulaire_cand */
if (formOpt.isPresent()) {
dateMod = formOpt.get().getDatCreFormulaireCand();
}
/* on compare avec la derniere réponse FormulaireCandidat */
if (formCandidatOpt.isPresent()) {
final FormulaireCandidat form = formCandidatOpt.get();
if (dateMod == null) {
dateMod = form.getDatReponseFormulaireCandidat();
} else {
dateMod = (form.getDatReponseFormulaireCandidat().isAfter(dateMod)) ? form.getDatReponseFormulaireCandidat() : dateMod;
}
}
/* on compare avec la derniere réponse des PJ */
if (pjOpt.isPresent()) {
final PjCand pj = pjOpt.get();
if (dateMod == null) {
dateMod = pj.getDatModStatutPjCand();
} else {
dateMod = (pj.getDatModStatutPjCand().isAfter(dateMod)) ? pj.getDatModStatutPjCand() : dateMod;
}
}
if (dateMod == null) {
return "";
} else {
return dateMod.format(formatterDate);
}
}
Aggregations