use of fr.univlorraine.ecandidat.repositories.PjCandRepository in project esup-ecandidat by EsupPortail.
the class CandidaturePieceController method isPjModified.
/**
* Methode inutilisée, controle dans le batch
* @param pieceJustif
* @param candidature
* @return true si une pièce existe alors qu'on veut l'ajouter
*/
/* public Boolean controlPjAdd(PjPresentation pieceJustif, Candidature
* candidature, CandidatureListener listener){ if
* (!candidature.getFormation().getTemDematForm()){ return false; } if
* (pieceJustif.getPjCandidatFromApogee() != null){ return false; } Boolean
* needToReload = false; //Le fichier de la pièce devrai être a null, sinon ca
* veut dire que le listener d'ajout de pièce n'a pas fonctionné if
* (pieceJustif.getFilePj()!=null){ logger.
* debug("Ajout PJ en erreur, rechargement demandé, la pièce devrait être null.."
* ); needToReload = true; }else if (pieceJustif.getPJCommune()){ //Si commune,
* on recherche la pièce dans toutes candidatures pour trouver si un fichier a
* été déposé List<PjCand> listePjCand = pjCandRepository.
* findByIdIdPjAndCandidatureCandidatIdCandidatAndCandidatureFormationTemDematFormOrderByDatModPjCandDesc
* (pieceJustif.getPieceJustif().getIdPj(),
* candidature.getCandidat().getIdCandidat(), true); if (listePjCand!=null &&
* listePjCand.size()>0 &&
* listePjCand.stream().filter(e->e.getFichier()!=null).count()>0){
* logger.debug("Ajout PJ en erreur, piece commune nok"); needToReload = true; }
* }else{ //Sinon, on recherche dans la candidature PjCandPK pk = new
* PjCandPK(pieceJustif.getPieceJustif().getIdPj(),candidature.getIdCand());
* PjCand pjCand = pjCandRepository.findOne(pk);
* if (pjCand!=null && pjCand.getFichier()!=null){
* logger.debug("Ajout PJ en erreur, piece non commune nok"); needToReload =
* true; } } if (needToReload){
* logger.debug("Ajout PJ en erreur, rechargement demandé");
* Notification.show(applicationContext.getMessage("pj.add.error", null,
* UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); Candidature
* candidatureLoad = candidatureRepository.findOne(candidature.getIdCand());
* listener.reloadAllPiece(getPjCandidature(candidatureLoad), candidatureLoad);
* return true; } return false; } */
/**
* Methode qui vérifie si la PJ a été modifiée par qqun d'autre obligatoire pour
* les PJ commune qui peuvent etre modifiées dans une autre candidature on se
* base sur la date de modification
* @param pieceJustif
* @return true si la PJ a été modifiée
*/
public Boolean isPjModified(final PjPresentation pieceJustif, final Candidature candidature, final Boolean showNotif, final CandidatureListener listener) {
if (!candidature.getFormation().getTemDematForm()) {
return false;
}
if (pieceJustif.getPjCandidatFromApogee() != null) {
logger.debug("Pas de verification pièce pour les PJ d'Apogée : " + pieceJustif);
return false;
}
logger.debug("Verification pièce : " + pieceJustif);
Boolean needToReload = false;
if (pieceJustif.getPJCommune()) {
final List<PjCand> listePjCand = pjCandRepository.findByIdIdPjAndCandidatureCandidatIdCandidatAndCandidatureFormationTemDematFormOrderByDatModPjCandDesc(pieceJustif.getPieceJustif().getIdPj(), candidature.getCandidat().getIdCandidat(), true);
PjCand pjCandFind = null;
if (listePjCand != null && listePjCand.size() > 0) {
// on cherche d'abord en priorité si la pièce est présente sur la candidature
final Optional<PjCand> pjCandOpt = listePjCand.stream().filter(e -> e.getCandidature().getIdCand().equals(pieceJustif.getIdCandidature())).findFirst();
if (pjCandOpt.isPresent()) {
pjCandFind = pjCandOpt.get();
} else {
pjCandFind = listePjCand.get(0);
}
}
logger.debug("Pièces trouvées : " + listePjCand.size() + " : " + pjCandFind);
// nouvelle pièce, si il en existe une, on recharge
if (pieceJustif.getDatModification() == null) {
// la piece etait vide et on en a ajouté une
if (pjCandFind != null) {
logger.debug("Cas no1, pièces nouvelle et pièce trouvée : " + pieceJustif.getDatModification() + " - " + pjCandFind);
needToReload = true;
}
} else /* ce n'est pas une nouvelle pièce, on vérifie : - qu'elle n'a pas été supprimée
* en route - que sa date de modif est différente */
{
// piece supprimée
if (pjCandFind == null) {
logger.debug("Cas no2, pièces vide : " + pjCandFind);
needToReload = true;
} else // !pjCandFind.getDatModPjCand().equals(pieceJustif.getDatModification())){
if (!pjCandFind.getDatModPjCand().equals(pieceJustif.getDatModification())) {
needToReload = true;
logger.debug("Cas no3, dates différente : " + pieceJustif.getDatModification() + " - " + pjCandFind.getDatModPjCand() + " - test = " + pjCandFind.getDatModPjCand().equals(pieceJustif.getDatModification()));
}
}
} else {
// si pièce non commune, présente dans la fenetre mais absente en base
if (pieceJustif.getDatModification() != null) {
final PjCandPK pk = new PjCandPK(pieceJustif.getPieceJustif().getIdPj(), candidature.getIdCand());
final PjCand pjCand = pjCandRepository.findOne(pk);
if (pjCand == null) {
logger.debug("Cas no4, pièce non commune mais supprimée");
needToReload = true;
}
}
}
/* Si on est dans un des deux cas, on recharge la liste de pièces */
if (needToReload) {
logger.debug("Rechargement demandé");
if (showNotif) {
Notification.show(applicationContext.getMessage("pj.modified", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE);
}
final Candidature candidatureLoad = candidatureRepository.findOne(candidature.getIdCand());
listener.reloadAllPiece(getPjCandidature(candidatureLoad), candidatureLoad);
return true;
}
return false;
}
Aggregations