Search in sources :

Example 1 with PieceJustif

use of fr.univlorraine.ecandidat.entities.ecandidat.PieceJustif in project esup-ecandidat by EsupPortail.

the class CandidaturePieceController method setIsConcernedPieceJustificative.

/**
 * Change le statut est concerne d'une pj
 * @param pieceJustif
 * @param isConcerned
 * @param candidature
 * @param listener
 */
public void setIsConcernedPieceJustificative(final PjPresentation pieceJustif, final Boolean isConcerned, final Candidature candidature, final CandidatureListener listener) {
    Assert.notNull(candidature, applicationContext.getMessage("assert.notNull", null, UI.getCurrent().getLocale()));
    /* Verrou */
    if (!lockCandidatController.getLockOrNotifyCandidature(candidature)) {
        return;
    }
    final String user = userController.getCurrentUserLogin();
    if (isConcerned) {
        final ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("pj.window.concerne", new Object[] { pieceJustif.getLibPj() }, UI.getCurrent().getLocale()), applicationContext.getMessage("pj.window.conditionnel.title", null, UI.getCurrent().getLocale()));
        confirmWindow.addBtnOuiListener(event -> {
            /* Verrou */
            if (!lockCandidatController.getLockOrNotifyCandidature(candidature)) {
                return;
            }
            if (isPjModified(pieceJustif, candidature, true, listener)) {
                return;
            }
            PjCand pjCand = null;
            if (pieceJustif.getPJCommune()) {
                final List<PjCand> listePjCand = pjCandRepository.findByIdIdPjAndCandidatureCandidatIdCandidatAndCandidatureFormationTemDematFormOrderByDatModPjCandDesc(pieceJustif.getPieceJustif().getIdPj(), candidature.getCandidat().getIdCandidat(), true);
                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()) {
                        pjCand = pjCandOpt.get();
                    } else {
                        pjCand = listePjCand.get(0);
                    }
                }
            } else {
                final PjCandPK pk = new PjCandPK(pieceJustif.getPieceJustif().getIdPj(), candidature.getIdCand());
                pjCand = pjCandRepository.findOne(pk);
            }
            if (pjCand != null && pjCand.getFichier() == null) {
                pjCandRepository.delete(pjCand);
                candidature.setUserModCand(user);
                candidature.setDatModCand(LocalDateTime.now());
                candidature.removePjCand(pjCand);
                final TypeStatutPiece statutAtt = tableRefController.getTypeStatutPieceAttente();
                pieceJustif.setCodStatut(statutAtt.getCodTypStatutPiece());
                pieceJustif.setLibStatut(i18nController.getI18nTraduction(statutAtt.getI18nLibTypStatutPiece()));
                pieceJustif.setDatModification(null);
                final Candidature candidatureSave = candidatureRepository.save(candidature);
                listener.pjModified(pieceJustif, candidatureSave);
            }
        });
        UI.getCurrent().addWindow(confirmWindow);
    } else {
        final ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("pj.window.nonConcerne", new Object[] { pieceJustif.getLibPj() }, UI.getCurrent().getLocale()), applicationContext.getMessage("pj.window.conditionnel.title", null, UI.getCurrent().getLocale()));
        confirmWindow.addBtnOuiListener(event -> {
            /* Verrou */
            if (!lockCandidatController.getLockOrNotifyCandidature(candidature)) {
                return;
            }
            if (isPjModified(pieceJustif, candidature, true, listener)) {
                return;
            }
            PjCand pjCand = null;
            final PjCandPK pk = new PjCandPK(pieceJustif.getPieceJustif().getIdPj(), candidature.getIdCand());
            if (pieceJustif.getPJCommune()) {
                final List<PjCand> listePjCand = pjCandRepository.findByIdIdPjAndCandidatureCandidatIdCandidatAndCandidatureFormationTemDematFormOrderByDatModPjCandDesc(pieceJustif.getPieceJustif().getIdPj(), candidature.getCandidat().getIdCandidat(), true);
                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()) {
                        pjCand = pjCandOpt.get();
                    } else {
                        pjCand = listePjCand.get(0);
                    }
                }
            } else {
                pjCand = pjCandRepository.findOne(pk);
            }
            if (pjCand == null) {
                pjCand = new PjCand(pk, user, candidature, pieceJustif.getPieceJustif());
                pjCand.setLibFilePjCand(null);
                pjCand.setUserModPjCand(user);
                pjCand.setFichier(null);
                final TypeStatutPiece statutNotConcern = tableRefController.getTypeStatutPieceNonConcerne();
                pieceJustif.setCodStatut(statutNotConcern.getCodTypStatutPiece());
                pieceJustif.setLibStatut(i18nController.getI18nTraduction(statutNotConcern.getI18nLibTypStatutPiece()));
                pjCand.setTypeStatutPiece(statutNotConcern);
                pjCand = pjCandRepository.saveAndFlush(pjCand);
                // obligé de recharger l'objet car le datetime est arrondi :(
                final PjCand pjCandSave = pjCandRepository.findOne(pk);
                pieceJustif.setFilePj(null);
                pieceJustif.setCodStatut(statutNotConcern.getCodTypStatutPiece());
                pieceJustif.setLibStatut(i18nController.getI18nTraduction(statutNotConcern.getI18nLibTypStatutPiece()));
                pieceJustif.setIdCandidature(candidature.getIdCand());
                pieceJustif.setDatModification(pjCandSave.getDatModPjCand());
                candidature.setUserModCand(user);
                candidature.updatePjCand(pjCandSave);
                candidature.setDatModCand(LocalDateTime.now());
                final Candidature candidatureSave = candidatureRepository.save(candidature);
                listener.pjModified(pieceJustif, candidatureSave);
            }
        });
        UI.getCurrent().addWindow(confirmWindow);
    }
}
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) TypeStatutPiece(fr.univlorraine.ecandidat.entities.ecandidat.TypeStatutPiece) PjCand(fr.univlorraine.ecandidat.entities.ecandidat.PjCand) ConfirmWindow(fr.univlorraine.ecandidat.views.windows.ConfirmWindow) PjCandPK(fr.univlorraine.ecandidat.entities.ecandidat.PjCandPK) Candidature(fr.univlorraine.ecandidat.entities.ecandidat.Candidature) FormulaireCandidature(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidature)

Example 2 with PieceJustif

use of fr.univlorraine.ecandidat.entities.ecandidat.PieceJustif in project esup-ecandidat by EsupPortail.

the class PieceJustifViewTemplate method init.

/**
 * Initialise la vue
 */
@PostConstruct
public void init() {
    /* Style */
    setSizeFull();
    setMargin(true);
    setSpacing(true);
    /* Titre */
    titleParam.addStyleName(StyleConstants.VIEW_TITLE);
    addComponent(titleParam);
    /* Boutons */
    buttonsLayout.setWidth(100, Unit.PERCENTAGE);
    buttonsLayout.setSpacing(true);
    addComponent(buttonsLayout);
    btnNew.setCaption(applicationContext.getMessage("pieceJustif.btnNouveau", null, UI.getCurrent().getLocale()));
    btnNew.setEnabled(true);
    buttonsLayout.addComponent(btnNew);
    buttonsLayout.setComponentAlignment(btnNew, Alignment.MIDDLE_LEFT);
    btnEdit.setCaption(applicationContext.getMessage("btnEdit", null, UI.getCurrent().getLocale()));
    btnEdit.setEnabled(false);
    btnEdit.addClickListener(e -> {
        if (pieceJustifTable.getValue() instanceof PieceJustif) {
            pieceJustifController.editPieceJustif((PieceJustif) pieceJustifTable.getValue());
        }
    });
    buttonsLayout.addComponent(btnEdit);
    buttonsLayout.setComponentAlignment(btnEdit, Alignment.MIDDLE_CENTER);
    OneClickButton btnDelete = new OneClickButton(applicationContext.getMessage("btnDelete", null, UI.getCurrent().getLocale()), FontAwesome.TRASH_O);
    btnDelete.setEnabled(false);
    btnDelete.addClickListener(e -> {
        if (pieceJustifTable.getValue() instanceof PieceJustif) {
            pieceJustifController.deletePieceJustif((PieceJustif) pieceJustifTable.getValue());
        }
    });
    buttonsLayout.addComponent(btnDelete);
    buttonsLayout.setComponentAlignment(btnDelete, Alignment.MIDDLE_RIGHT);
    /* Table des pieceJustifs */
    pieceJustifTable.addBooleanColumn(PieceJustif_.tesPj.getName());
    pieceJustifTable.addBooleanColumn(PieceJustif_.temCommunPj.getName());
    pieceJustifTable.addBooleanColumn(PieceJustif_.temUnicitePj.getName());
    pieceJustifTable.addBooleanColumn(PieceJustif_.temConditionnelPj.getName());
    /* Type de traitement */
    pieceJustifTable.addGeneratedColumn(PieceJustif_.typeTraitement.getName(), new ColumnGenerator() {

        @Override
        public Object generateCell(final Table source, final Object itemId, final Object columnId) {
            final PieceJustif pieceJustif = (PieceJustif) itemId;
            if (pieceJustif.getTypeTraitement() != null) {
                return pieceJustif.getTypeTraitement().getLibTypTrait();
            } else {
                return applicationContext.getMessage("typeTraitement.lib.all", null, UI.getCurrent().getLocale());
            }
        }
    });
    if (!fileController.getModeDematBackoffice().equals(ConstanteUtils.TYPE_FICHIER_STOCK_NONE)) {
        pieceJustifTable.addGeneratedColumn(PieceJustif_.fichier.getName(), new ColumnGenerator() {

            @Override
            public Object generateCell(final Table source, final Object itemId, final Object columnId) {
                final PieceJustif pieceJustif = (PieceJustif) itemId;
                if (pieceJustif.getFichier() == null) {
                    if (isVisuPjCommunMode && !isReadOnly) {
                        OneClickButton btnAdd = new OneClickButton(FontAwesome.PLUS);
                        btnAdd.addStyleName(StyleConstants.ON_DEMAND_FILE_LAYOUT);
                        btnAdd.setDescription(applicationContext.getMessage("file.btnAdd", null, UI.getCurrent().getLocale()));
                        btnAdd.addClickListener(e -> pieceJustifController.addFileToPieceJustificative(pieceJustif));
                        return btnAdd;
                    }
                    return null;
                } else {
                    OnDemandFileLayout fileLayout = new OnDemandFileLayout(pieceJustif.getFichier().getNomFichier());
                    /* Delete */
                    if (isVisuPjCommunMode && !isReadOnly) {
                        fileLayout.addBtnDelClickListener(e -> pieceJustifController.deleteFileToPieceJustificative(pieceJustif));
                    }
                    /* Viewer si JPG */
                    if (MethodUtils.isImgFileName(pieceJustif.getFichier().getNomFichier())) {
                        fileLayout.addBtnViewerClickListener(e -> {
                            OnDemandFile file = new OnDemandFile(pieceJustif.getFichier().getNomFichier(), fileController.getInputStreamFromFichier(pieceJustif.getFichier()));
                            ImageViewerWindow iv = new ImageViewerWindow(file, null);
                            UI.getCurrent().addWindow(iv);
                        });
                    /* Opener si PDF */
                    } else if (MethodUtils.isPdfFileName(pieceJustif.getFichier().getNomFichier())) {
                        fileLayout.addBtnViewerPdfBrowserOpener(new OnDemandStreamFile() {

                            @Override
                            public OnDemandFile getOnDemandFile() {
                                return new OnDemandFile(pieceJustif.getFichier().getNomFichier(), fileController.getInputStreamFromFichier(pieceJustif.getFichier()));
                            }
                        });
                    }
                    /* Download */
                    fileLayout.addBtnDownloadFileDownloader(new OnDemandStreamFile() {

                        @Override
                        public OnDemandFile getOnDemandFile() {
                            return new OnDemandFile(pieceJustif.getFichier().getNomFichier(), fileController.getInputStreamFromFichier(pieceJustif.getFichier()));
                        }
                    });
                    return fileLayout;
                }
            }
        });
        FIELDS_ORDER = FIELDS_ORDER_FILE;
    } else {
        FIELDS_ORDER = FIELDS_ORDER_NO_FILE;
    }
    pieceJustifTable.setSizeFull();
    pieceJustifTable.setVisibleColumns((Object[]) FIELDS_ORDER);
    for (String fieldName : FIELDS_ORDER) {
        pieceJustifTable.setColumnHeader(fieldName, applicationContext.getMessage("pieceJustif.table." + fieldName, null, UI.getCurrent().getLocale()));
    }
    container.setItemSorter(new DefaultItemSorter() {

        @Override
        public int compare(final Object itemId1, final Object itemId2) {
            return ((PieceJustif) itemId1).compareTo((PieceJustif) itemId2);
        }
    });
    pieceJustifTable.addHeaderClickListener(e -> {
        container.setItemSorter(new DefaultItemSorter());
        isOrderEnable = false;
    });
    pieceJustifTable.setColumnCollapsingAllowed(true);
    pieceJustifTable.setColumnReorderingAllowed(true);
    pieceJustifTable.setSelectable(true);
    pieceJustifTable.setImmediate(true);
    pieceJustifTable.setColumnWidth(PieceJustif_.orderPj.getName(), 60);
    pieceJustifTable.addItemSetChangeListener(e -> pieceJustifTable.sanitizeSelection());
    pieceJustifTable.addValueChangeListener(e -> {
        /*
			 * Les boutons d'édition et de suppression de pieceJustif sont actifs seulement
			 * si une pieceJustif est sélectionnée.
			 */
        boolean pieceJustifIsSelected = pieceJustifTable.getValue() instanceof PieceJustif;
        btnEdit.setEnabled(pieceJustifIsSelected);
        btnDelete.setEnabled(pieceJustifIsSelected);
    });
    addComponent(pieceJustifTable);
    setExpandRatio(pieceJustifTable, 1);
}
Also used : OnDemandStreamFile(fr.univlorraine.ecandidat.vaadin.components.OnDemandFileUtils.OnDemandStreamFile) VerticalLayout(com.vaadin.ui.VerticalLayout) PieceJustif(fr.univlorraine.ecandidat.entities.ecandidat.PieceJustif) Alignment(com.vaadin.ui.Alignment) UI(com.vaadin.ui.UI) OnDemandFileLayout(fr.univlorraine.ecandidat.vaadin.components.OnDemandFileLayout) PieceJustif_(fr.univlorraine.ecandidat.entities.ecandidat.PieceJustif_) FontAwesome(com.vaadin.server.FontAwesome) Label(com.vaadin.ui.Label) ColumnGenerator(com.vaadin.ui.Table.ColumnGenerator) I18nController(fr.univlorraine.ecandidat.controllers.I18nController) ConstanteUtils(fr.univlorraine.ecandidat.utils.ConstanteUtils) DefaultItemSorter(com.vaadin.data.util.DefaultItemSorter) MethodUtils(fr.univlorraine.ecandidat.utils.MethodUtils) Resource(javax.annotation.Resource) StyleConstants(fr.univlorraine.ecandidat.StyleConstants) FileController(fr.univlorraine.ecandidat.controllers.FileController) ApplicationContext(org.springframework.context.ApplicationContext) PieceJustifController(fr.univlorraine.ecandidat.controllers.PieceJustifController) BeanItemContainer(com.vaadin.data.util.BeanItemContainer) ImageViewerWindow(fr.univlorraine.ecandidat.views.windows.ImageViewerWindow) Table(com.vaadin.ui.Table) HorizontalLayout(com.vaadin.ui.HorizontalLayout) OnDemandFile(fr.univlorraine.ecandidat.vaadin.components.OnDemandFile) PostConstruct(javax.annotation.PostConstruct) TableFormating(fr.univlorraine.ecandidat.vaadin.components.TableFormating) OneClickButton(fr.univlorraine.ecandidat.vaadin.components.OneClickButton) OnDemandStreamFile(fr.univlorraine.ecandidat.vaadin.components.OnDemandFileUtils.OnDemandStreamFile) Table(com.vaadin.ui.Table) DefaultItemSorter(com.vaadin.data.util.DefaultItemSorter) OneClickButton(fr.univlorraine.ecandidat.vaadin.components.OneClickButton) OnDemandFile(fr.univlorraine.ecandidat.vaadin.components.OnDemandFile) ImageViewerWindow(fr.univlorraine.ecandidat.views.windows.ImageViewerWindow) ColumnGenerator(com.vaadin.ui.Table.ColumnGenerator) PieceJustif(fr.univlorraine.ecandidat.entities.ecandidat.PieceJustif) OnDemandFileLayout(fr.univlorraine.ecandidat.vaadin.components.OnDemandFileLayout) PostConstruct(javax.annotation.PostConstruct)

Example 3 with PieceJustif

use of fr.univlorraine.ecandidat.entities.ecandidat.PieceJustif in project esup-ecandidat by EsupPortail.

the class CandidatPieceController method recordPjFromApo.

/**
 * Insere les nouvelles pièces
 * @param candidat
 * @throws SiScolException
 */
@Transactional(rollbackFor = SiScolException.class)
private void recordPjFromApo(final Candidat candidat) throws SiScolException {
    if (candidat == null || candidat.getCompteMinima().getSupannEtuIdCptMin() == null || !isWsPJEnable()) {
        return;
    }
    // on collecte les code Apogee de pieces et on constitue une liste de codeApogee distinct
    List<String> listeCodeApo = pieceJustifController.getAllPieceJustifs().stream().filter(piece -> piece.getCodApoPj() != null && !piece.getCodApoPj().equals("")).map(PieceJustif::getCodApoPj).distinct().collect(Collectors.toList());
    List<PjCandidat> liste = new ArrayList<>();
    // on ajoute ses nouvelles pieces
    for (String codeTpj : listeCodeApo) {
        WSPjInfo info = siScolService.getPjInfoFromApogee(null, candidat.getCompteMinima().getSupannEtuIdCptMin(), codeTpj);
        if (info != null) {
            PjCandidatPK pk = new PjCandidatPK(candidat.getIdCandidat(), info.getCodAnu(), info.getCodTpj());
            PjCandidat pjCandidat = new PjCandidat();
            pjCandidat.setId(pk);
            pjCandidat.setNomFicPjCandidat(info.getNomFic());
            pjCandidat.setCandidat(candidat);
            if (info.getDatExp() != null) {
                pjCandidat.setDatExpPjCandidat(LocalDateTime.parse(info.getDatExp(), formatterDateTimeApoWsPj));
            }
            if (MethodUtils.validateBean(pjCandidat, logger)) {
                liste.add(pjCandidatRepository.save(pjCandidat));
            } else {
                throw new SiScolException("Erreur de validation");
            }
        }
    }
    candidat.setPjCandidats(liste);
}
Also used : SiScolGenericService(fr.univlorraine.ecandidat.services.siscol.SiScolGenericService) PieceJustif(fr.univlorraine.ecandidat.entities.ecandidat.PieceJustif) LocalDateTime(java.time.LocalDateTime) LoggerFactory(org.slf4j.LoggerFactory) UI(com.vaadin.ui.UI) WSPjInfo(fr.univlorraine.ecandidat.entities.siscol.WSPjInfo) ArrayList(java.util.ArrayList) PjCandidatRepository(fr.univlorraine.ecandidat.repositories.PjCandidatRepository) PjCandidatPK(fr.univlorraine.ecandidat.entities.ecandidat.PjCandidatPK) Notification(com.vaadin.ui.Notification) CandidatAdminListener(fr.univlorraine.ecandidat.utils.ListenerUtils.CandidatAdminListener) CompteMinima(fr.univlorraine.ecandidat.entities.ecandidat.CompteMinima) Logger(org.slf4j.Logger) ConstanteUtils(fr.univlorraine.ecandidat.utils.ConstanteUtils) MethodUtils(fr.univlorraine.ecandidat.utils.MethodUtils) Resource(javax.annotation.Resource) SiScolException(fr.univlorraine.ecandidat.services.siscol.SiScolException) Collectors(java.util.stream.Collectors) ApplicationContext(org.springframework.context.ApplicationContext) PjCandidat(fr.univlorraine.ecandidat.entities.ecandidat.PjCandidat) List(java.util.List) Component(org.springframework.stereotype.Component) Type(com.vaadin.ui.Notification.Type) DateTimeFormatter(java.time.format.DateTimeFormatter) Optional(java.util.Optional) Candidat(fr.univlorraine.ecandidat.entities.ecandidat.Candidat) ConfirmWindow(fr.univlorraine.ecandidat.views.windows.ConfirmWindow) InputStream(java.io.InputStream) Transactional(org.springframework.transaction.annotation.Transactional) PjCandidat(fr.univlorraine.ecandidat.entities.ecandidat.PjCandidat) WSPjInfo(fr.univlorraine.ecandidat.entities.siscol.WSPjInfo) ArrayList(java.util.ArrayList) PieceJustif(fr.univlorraine.ecandidat.entities.ecandidat.PieceJustif) SiScolException(fr.univlorraine.ecandidat.services.siscol.SiScolException) PjCandidatPK(fr.univlorraine.ecandidat.entities.ecandidat.PjCandidatPK) Transactional(org.springframework.transaction.annotation.Transactional)

Example 4 with PieceJustif

use of fr.univlorraine.ecandidat.entities.ecandidat.PieceJustif 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)

Example 5 with PieceJustif

use of fr.univlorraine.ecandidat.entities.ecandidat.PieceJustif in project esup-ecandidat by EsupPortail.

the class CandidaturePieceController method getPjCandidature.

/**
 * @param  candidature
 * @return             la liste des pj d'une candidature
 */
public List<PjPresentation> getPjCandidature(final Candidature candidature) {
    final List<PjPresentation> liste = new ArrayList<>();
    final TypeStatutPiece statutAtt = tableRefController.getTypeStatutPieceAttente();
    final TypeStatutPiece statutValide = tableRefController.getTypeStatutPieceValide();
    final Boolean isDemat = candidature.getFormation().getTemDematForm();
    int i = 1;
    for (final PieceJustif e : pieceJustifController.getPjForCandidature(candidature, true)) {
        liste.add(getPjPresentation(e, candidature, statutAtt, statutValide, i, isDemat));
        i++;
    }
    return liste;
}
Also used : PjPresentation(fr.univlorraine.ecandidat.utils.bean.presentation.PjPresentation) TypeStatutPiece(fr.univlorraine.ecandidat.entities.ecandidat.TypeStatutPiece) ArrayList(java.util.ArrayList) PieceJustif(fr.univlorraine.ecandidat.entities.ecandidat.PieceJustif)

Aggregations

PieceJustif (fr.univlorraine.ecandidat.entities.ecandidat.PieceJustif)9 UI (com.vaadin.ui.UI)6 ConstanteUtils (fr.univlorraine.ecandidat.utils.ConstanteUtils)6 ArrayList (java.util.ArrayList)6 Resource (javax.annotation.Resource)6 ApplicationContext (org.springframework.context.ApplicationContext)6 MethodUtils (fr.univlorraine.ecandidat.utils.MethodUtils)5 Notification (com.vaadin.ui.Notification)4 Type (com.vaadin.ui.Notification.Type)4 Candidature (fr.univlorraine.ecandidat.entities.ecandidat.Candidature)4 Fichier (fr.univlorraine.ecandidat.entities.ecandidat.Fichier)4 PjCand (fr.univlorraine.ecandidat.entities.ecandidat.PjCand)4 List (java.util.List)4 Component (org.springframework.stereotype.Component)4 FichierFiabilisation (fr.univlorraine.ecandidat.entities.ecandidat.FichierFiabilisation)3 Formulaire (fr.univlorraine.ecandidat.entities.ecandidat.Formulaire)3 PjCandidat (fr.univlorraine.ecandidat.entities.ecandidat.PjCandidat)3 TypeStatutPiece (fr.univlorraine.ecandidat.entities.ecandidat.TypeStatutPiece)3 FichierFiabilisationRepository (fr.univlorraine.ecandidat.repositories.FichierFiabilisationRepository)3 FichierRepository (fr.univlorraine.ecandidat.repositories.FichierRepository)3