fr.amapj.view.views.permanence.periode.update.PopupDeleteUtilisateurForPeriodePermanence.java Source code

Java tutorial

Introduction

Here is the source code for fr.amapj.view.views.permanence.periode.update.PopupDeleteUtilisateurForPeriodePermanence.java

Source

/*
 *  Copyright 2013-2018 Emmanuel BRUN (contact@amapj.fr)
 * 
 *  This file is part of AmapJ.
 *  
 *  AmapJ is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU Affero General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
    
 *  AmapJ is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Affero General Public License for more details.
 *
 *  You should have received a copy of the GNU Affero General Public License
 *  along with AmapJ.  If not, see <http://www.gnu.org/licenses/>.
 * 
 * 
 */
package fr.amapj.view.views.permanence.periode.update;

import java.util.ArrayList;
import java.util.List;

import com.vaadin.data.util.BeanItem;
import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.CheckBox;

import fr.amapj.service.services.permanence.periode.PeriodePermanenceUtilisateurDTO;
import fr.amapj.service.services.permanence.periode.PeriodePermanenceDTO;
import fr.amapj.service.services.permanence.periode.PeriodePermanenceService;
import fr.amapj.service.services.permanence.periode.update.PeriodePermanenceUpdateService;
import fr.amapj.view.engine.popup.formpopup.WizardFormPopup;
import fr.amapj.view.engine.tools.table.complex.ComplexTableBuilder;

/**
 * Permet de supprimer des utilisateurs d'une permanence 
 */
public class PopupDeleteUtilisateurForPeriodePermanence extends WizardFormPopup {

    protected PeriodePermanenceDTO dto;

    private ComplexTableBuilder<PeriodePermanenceUtilisateurDTO> builder;

    private List<PeriodePermanenceUtilisateurDTO> utilisateurToSuppress;

    static public enum Step {
        INFOS, CHOIX_UTILISATEURS, CONFIRMATION
    }

    @Override
    protected void configure() {
        add(Step.INFOS, () -> infos());
        add(Step.CHOIX_UTILISATEURS, () -> addFieldUtilisateurs(), () -> checkUtilisateur());
        add(Step.CONFIRMATION, () -> confirmation());
    }

    @Override
    protected Class getEnumClass() {
        return Step.class;
    }

    /**
     * 
     */
    public PopupDeleteUtilisateurForPeriodePermanence(Long id) {
        super();
        popupTitle = "Enlever des utilisateurs de cette priode de permanence";
        setWidth(80);

        // Chargement de l'objet   modifier
        dto = new PeriodePermanenceService().loadPeriodePermanenceDTO(id);

        utilisateurToSuppress = new ArrayList<PeriodePermanenceUtilisateurDTO>();

        item = new BeanItem<PeriodePermanenceDTO>(dto);

    }

    private void infos() {
        // Titre
        setStepTitle(" les informations gnrales.");

        //
        addLabel(
                "Cet outil va vous permettre d'enlever des utilisateurs de cette priode de permanence, mme si des utilisateurs sont dj inscrits",
                ContentMode.HTML);
    }

    private void addFieldUtilisateurs() {
        // Titre
        setStepTitle("choix des les personnes  enlever");

        addLabel("Veuillez cocher en face des personnes  enelever de cette periode de permanence",
                ContentMode.HTML);

        builder = new ComplexTableBuilder<PeriodePermanenceUtilisateurDTO>(dto.utilisateurs);
        builder.setPageLength(14);

        builder.addString("Nom", false, 300, e -> e.nom);
        builder.addString("Prnom", false, 300, e -> e.prenom);
        builder.addCheckBox("A enlever", "cb", true, 150, e -> e.toSuppress, null);

        addComplexTable(builder);

    }

    private String checkUtilisateur() {
        utilisateurToSuppress.clear();

        for (int i = 0; i < dto.utilisateurs.size(); i++) {
            PeriodePermanenceUtilisateurDTO lig = dto.utilisateurs.get(i);

            // 
            CheckBox cb = (CheckBox) builder.getComponent(i, "cb");

            if (cb.getValue() == true) {
                utilisateurToSuppress.add(lig);
            }
        }

        if (utilisateurToSuppress.size() == 0) {
            return "Vous devez supprimer au moins un utilisateur pour pouvoir continuer.";
        }

        return null;
    }

    /**
     *  
     */
    private void confirmation() {
        String info = new PeriodePermanenceUpdateService().getDeleteUtilisateurInfo(utilisateurToSuppress, dto.id);

        // Titre
        setStepTitle("confirmation avant modification");

        addLabel("Vous allez apporter les modifications suivantes sur cette priode de permanence:",
                ContentMode.HTML);

        addLabel(info, ContentMode.HTML);

        addLabel("Appuyez sur Sauvegarder pour raliser cette modification, ou Annuler pour ne rien modifier",
                ContentMode.HTML);

    }

    protected void performSauvegarder() {
        // Sauvegarde du contrat
        new PeriodePermanenceUpdateService().performDeleteUtilisateur(dto.id, utilisateurToSuppress);
    }

}