Search in sources :

Example 1 with PjCandRepository

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;
}
Also used : PieceJustif(fr.univlorraine.ecandidat.entities.ecandidat.PieceJustif) LoggerFactory(org.slf4j.LoggerFactory) UI(com.vaadin.ui.UI) FichierFiabilisation(fr.univlorraine.ecandidat.entities.ecandidat.FichierFiabilisation) Formulaire(fr.univlorraine.ecandidat.entities.ecandidat.Formulaire) ByteArrayInOutStream(fr.univlorraine.ecandidat.utils.ByteArrayInOutStream) TypeStatutPiece(fr.univlorraine.ecandidat.entities.ecandidat.TypeStatutPiece) FormulairePresentation(fr.univlorraine.ecandidat.utils.bean.presentation.FormulairePresentation) ZipEntry(java.util.zip.ZipEntry) ConstanteUtils(fr.univlorraine.ecandidat.utils.ConstanteUtils) MethodUtils(fr.univlorraine.ecandidat.utils.MethodUtils) Resource(javax.annotation.Resource) PjCandidat(fr.univlorraine.ecandidat.entities.ecandidat.PjCandidat) List(java.util.List) Type(com.vaadin.ui.Notification.Type) OnDemandFile(fr.univlorraine.ecandidat.vaadin.components.OnDemandFile) FichierFiabilisationRepository(fr.univlorraine.ecandidat.repositories.FichierFiabilisationRepository) LocalDate(java.time.LocalDate) Optional(java.util.Optional) Candidature(fr.univlorraine.ecandidat.entities.ecandidat.Candidature) FichierRepository(fr.univlorraine.ecandidat.repositories.FichierRepository) FormulaireCandidat(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidat) PjCand(fr.univlorraine.ecandidat.entities.ecandidat.PjCand) ZipOutputStream(java.util.zip.ZipOutputStream) FormulaireCandidature(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidature) PjCandRepository(fr.univlorraine.ecandidat.repositories.PjCandRepository) LocalDateTime(java.time.LocalDateTime) Fichier(fr.univlorraine.ecandidat.entities.ecandidat.Fichier) PjPresentation(fr.univlorraine.ecandidat.utils.bean.presentation.PjPresentation) ArrayList(java.util.ArrayList) NomenclatureUtils(fr.univlorraine.ecandidat.utils.NomenclatureUtils) Notification(com.vaadin.ui.Notification) FormulaireCand(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCand) FileException(fr.univlorraine.ecandidat.services.file.FileException) Logger(org.slf4j.Logger) PjCandPK(fr.univlorraine.ecandidat.entities.ecandidat.PjCandPK) FormulaireCandRepository(fr.univlorraine.ecandidat.repositories.FormulaireCandRepository) InfoWindow(fr.univlorraine.ecandidat.views.windows.InfoWindow) IOException(java.io.IOException) ApplicationContext(org.springframework.context.ApplicationContext) FormulaireCandPK(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandPK) CtrCandActionPjWindow(fr.univlorraine.ecandidat.views.windows.CtrCandActionPjWindow) Component(org.springframework.stereotype.Component) CandidatureListener(fr.univlorraine.ecandidat.utils.ListenerUtils.CandidatureListener) FormulaireCandidatRepository(fr.univlorraine.ecandidat.repositories.FormulaireCandidatRepository) FormulaireMailBean(fr.univlorraine.ecandidat.utils.bean.mail.FormulaireMailBean) DateTimeFormatter(java.time.format.DateTimeFormatter) CandidatureRepository(fr.univlorraine.ecandidat.repositories.CandidatureRepository) UploadWindow(fr.univlorraine.ecandidat.views.windows.UploadWindow) ConfirmWindow(fr.univlorraine.ecandidat.views.windows.ConfirmWindow) InputStream(java.io.InputStream) Assert(org.springframework.util.Assert) PjCand(fr.univlorraine.ecandidat.entities.ecandidat.PjCand) PjCandPK(fr.univlorraine.ecandidat.entities.ecandidat.PjCandPK) Candidature(fr.univlorraine.ecandidat.entities.ecandidat.Candidature) FormulaireCandidature(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidature)

Aggregations

Notification (com.vaadin.ui.Notification)1 Type (com.vaadin.ui.Notification.Type)1 UI (com.vaadin.ui.UI)1 Candidature (fr.univlorraine.ecandidat.entities.ecandidat.Candidature)1 Fichier (fr.univlorraine.ecandidat.entities.ecandidat.Fichier)1 FichierFiabilisation (fr.univlorraine.ecandidat.entities.ecandidat.FichierFiabilisation)1 Formulaire (fr.univlorraine.ecandidat.entities.ecandidat.Formulaire)1 FormulaireCand (fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCand)1 FormulaireCandPK (fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandPK)1 FormulaireCandidat (fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidat)1 FormulaireCandidature (fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidature)1 PieceJustif (fr.univlorraine.ecandidat.entities.ecandidat.PieceJustif)1 PjCand (fr.univlorraine.ecandidat.entities.ecandidat.PjCand)1 PjCandPK (fr.univlorraine.ecandidat.entities.ecandidat.PjCandPK)1 PjCandidat (fr.univlorraine.ecandidat.entities.ecandidat.PjCandidat)1 TypeStatutPiece (fr.univlorraine.ecandidat.entities.ecandidat.TypeStatutPiece)1 CandidatureRepository (fr.univlorraine.ecandidat.repositories.CandidatureRepository)1 FichierFiabilisationRepository (fr.univlorraine.ecandidat.repositories.FichierFiabilisationRepository)1 FichierRepository (fr.univlorraine.ecandidat.repositories.FichierRepository)1 FormulaireCandRepository (fr.univlorraine.ecandidat.repositories.FormulaireCandRepository)1