use of fr.univlorraine.ecandidat.utils.PdfAttachement 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);
}
}
}
use of fr.univlorraine.ecandidat.utils.PdfAttachement in project esup-ecandidat by EsupPortail.
the class CandidatureCtrCandController method validAvis.
/**
* Valide les avis de candidatures
* @param listeCandidature
* @return true si tout s'est bien passé
*/
public Boolean validAvis(final List<Candidature> listeCandidature) {
if (checkLockListCandidature(listeCandidature)) {
return false;
}
for (final Candidature candidature : listeCandidature) {
if (candidature.getLastTypeDecision() == null) {
Notification.show(applicationContext.getMessage("candidature.validAvis.error", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE);
return false;
}
}
/* Bug sur la validation d'avis --> des candidatures ont recu le mail mais la candidature n'a pas été validée */
/* On vérifie qu'il n'y a pas de candidature en double */
final Long sizelistId = listeCandidature.stream().map(Candidature::getIdCand).distinct().count();
if (listeCandidature.size() != sizelistId.intValue()) {
logger.warn(applicationContext.getMessage("candidature.validAvis.doublon", null, UI.getCurrent().getLocale()) + " : erreur size list");
Notification.show(applicationContext.getMessage("candidature.validAvis.doublon", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE);
return false;
}
final String user = userController.getCurrentUserLogin();
/* Bug sur la validation d'avis --> des candidatures ont recu le mail mais la candidature n'a pas été validée */
final Map<Integer, Integer> mapIdCandTraite = new HashMap<>();
int errorDoublon = 0;
/* Si l'avis donné est un avis LC, il faut recalculer le rang reel pour chaque formation */
final List<Formation> listeFormLC = new ArrayList<>();
for (final Candidature candidature : listeCandidature) {
Assert.notNull(candidature, applicationContext.getMessage("assert.notNull", null, UI.getCurrent().getLocale()));
/* Verrou */
if (!lockCandidatController.getLockOrNotifyCandidature(candidature)) {
continue;
}
TypeDecisionCandidature typeDecision = candidature.getLastTypeDecision().cloneCompletTypeDecisionCandidature();
if (typeDecision.getTypeDecision() != null && typeDecision.getTypeDecision().getTypeAvis().equals(tableRefController.getTypeAvisListComp())) {
final Formation formLc = candidature.getFormation();
if (formLc.getTemListCompForm() && !listeFormLC.contains(formLc)) {
listeFormLC.add(candidature.getFormation());
}
}
typeDecision.setTemValidTypeDecCand(true);
typeDecision.setDatValidTypeDecCand(LocalDateTime.now());
typeDecision.setUserValidTypeDecCand(user);
typeDecision.setCandidature(candidature);
/* On vérifie que la candidature de l'avis n'a pas déjà été enregistré avant enregistrement */
if (mapIdCandTraite.get(typeDecision.getCandidature().getIdCand()) != null) {
errorDoublon++;
continue;
} else {
mapIdCandTraite.put(typeDecision.getCandidature().getIdCand(), typeDecision.getCandidature().getIdCand());
}
typeDecision = typeDecisionCandidatureRepository.save(typeDecision);
final String localeCandidat = candidature.getCandidat().getLangue().getCodLangue();
candidature.setUserModCand(user);
candidature.setDatModCand(LocalDateTime.now());
candidature.setTypeDecision(typeDecision);
candidature.setLastTypeDecision(typeDecision);
candidatureRepository.save(candidature);
String motif = "";
if (typeDecision.getTypeDecision().getTypeAvis().equals(tableRefController.getTypeAvisDefavorable()) && typeDecision.getMotivationAvis() != null) {
motif = i18nController.getI18nTraduction(typeDecision.getMotivationAvis().getI18nLibMotiv(), localeCandidat);
}
String complementAppel = "";
if (typeDecision.getTemAppelTypeDecCand()) {
complementAppel = applicationContext.getMessage("candidature.mail.complement.appel", null, UI.getCurrent().getLocale());
}
String rang = "";
if (typeDecision.getListCompRangTypDecCand() != null) {
rang = String.valueOf(typeDecision.getListCompRangTypDecCand());
}
String commentaire = "";
if (typeDecision.getTypeDecision().getTemAffCommentTypDec()) {
commentaire = typeDecision.getCommentTypeDecCand();
}
final AvisMailBean mailBean = new AvisMailBean(motif, commentaire, getComplementPreselectMail(typeDecision), complementAppel, rang);
PdfAttachement attachement = null;
final InputStream is = candidatureController.downloadLettre(candidature, ConstanteUtils.TYP_LETTRE_MAIL, localeCandidat, true);
if (is != null) {
try {
attachement = new PdfAttachement(is, candidatureController.getNomFichierLettre(candidature, ConstanteUtils.TYP_LETTRE_MAIL, localeCandidat));
} catch (final Exception e) {
attachement = null;
}
}
mailController.sendMail(candidature.getCandidat().getCompteMinima().getMailPersoCptMin(), typeDecision.getTypeDecision().getMail(), mailBean, candidature, localeCandidat, attachement);
}
/* Recalcul des rang LC si besoin */
if (parametreController.isCalculRangReelLc()) {
final List<TypeDecisionCandidature> listeTypDecRangReel = candidatureGestionController.calculRangReelListForm(listeFormLC);
/* Pour chaque candidature recalculée, on ajouter le rang reel */
listeTypDecRangReel.forEach(td -> {
/* On cherche la candidature associée */
final Optional<Candidature> optCand = listeCandidature.stream().filter(cand -> cand.equals(td.getCandidature())).findFirst();
if (optCand.isPresent()) {
optCand.get().setTypeDecision(td);
optCand.get().setLastTypeDecision(td);
}
});
}
/* Bug sur la validation d'avis --> des candidatures ont recu le mail mais la candidature n'a pas été validée */
if (errorDoublon > 0) {
logger.warn(applicationContext.getMessage("candidature.validAvis.doublon", null, UI.getCurrent().getLocale()) + " : erreur map", Type.WARNING_MESSAGE);
Notification.show(applicationContext.getMessage("candidature.validAvis.doublon", null, UI.getCurrent().getLocale()));
} else {
Notification.show(applicationContext.getMessage("candidature.validAvis.success", null, UI.getCurrent().getLocale()), Type.TRAY_NOTIFICATION);
}
return true;
}
Aggregations