com.asptt.plongee.resa.wicket.page.inscription.DesinscriptionFilleulPage.java Source code

Java tutorial

Introduction

Here is the source code for com.asptt.plongee.resa.wicket.page.inscription.DesinscriptionFilleulPage.java

Source

package com.asptt.plongee.resa.wicket.page.inscription;

import java.util.List;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.StringResourceModel;

import com.asptt.plongee.resa.exception.ResaException;
import com.asptt.plongee.resa.exception.TechnicalException;
import com.asptt.plongee.resa.mail.PlongeeMail;
import com.asptt.plongee.resa.model.Adherent;
import com.asptt.plongee.resa.model.InscriptionFilleul;
import com.asptt.plongee.resa.model.Plongee;
import com.asptt.plongee.resa.model.PlongeeFilleulDataProvider;
import com.asptt.plongee.resa.wicket.component.ConfirmAjaxLink;
import com.asptt.plongee.resa.wicket.page.ErreurTechniquePage;
import com.asptt.plongee.resa.wicket.page.TemplatePage;
import com.asptt.plongee.resa.util.CatalogueMessages;
import com.asptt.plongee.resa.util.Parameters;
import com.asptt.plongee.resa.util.ResaUtil;
import com.asptt.plongee.resa.wicket.ResaSession;
import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
import org.apache.wicket.markup.html.panel.Panel;

public class DesinscriptionFilleulPage extends TemplatePage {

    private List<InscriptionFilleul> plongeesDesFilleuls = null;
    private Adherent parrain = null;
    private final Adherent filleul = null;
    private List<Plongee> plongees;
    private final FeedbackPanel feedback;

    public DesinscriptionFilleulPage() {

        this.parrain = ResaSession.get().getAdherent();

        setPageTitle("Desinscription Externe plongee");
        add(new Label("message", new StringResourceModel(CatalogueMessages.DESINSCRIPTION_FILLEUL_MSG_ADHERENT,
                this, new Model<Adherent>(parrain))));

        feedback = new FeedbackPanel("feedback");
        feedback.setOutputMarkupId(true);
        add(feedback);

        init();
    }

    private void init() {
        try {
            plongeesDesFilleuls = ResaSession.get().getPlongeeService().rechercherPlongeesFilleulInscrit(parrain,
                    Parameters.getInt("desincription.nb.heure"));
        } catch (TechnicalException e) {
            e.printStackTrace();
            ErreurTechniquePage etp = new ErreurTechniquePage(e);
            setResponsePage(etp);
        }

        PlongeeFilleulDataProvider pDataProvider = new PlongeeFilleulDataProvider(plongeesDesFilleuls);

        add(new DataView<InscriptionFilleul>("simple", pDataProvider) {

            private static final long serialVersionUID = 2877768852318892774L;

            @Override
            protected void populateItem(final Item<InscriptionFilleul> item) {
                final InscriptionFilleul inscription = item.getModelObject();
                final Plongee plongee = inscription.getPlongeeInscrit();
                final Adherent filleul = inscription.getFilleul();
                String nomDP = "Aucun";
                if (null != plongee.getDp()) {
                    nomDP = plongee.getDp().getNom();
                }
                //preparation du message de confirmation
                IModel<Plongee> model = new Model<Plongee>(plongee);
                StringResourceModel srm = new StringResourceModel(
                        CatalogueMessages.DESINSCRIPTION_FILLEUL_CONFIRMATION, this, model,
                        new Object[] { ResaUtil.getHeurePlongee(plongee.getDatePlongee()),
                                ResaUtil.getDateString(plongee.getDatePlongee()), filleul.getNom(),
                                filleul.getPrenom() });

                item.add(new ConfirmAjaxLink("select", srm.getString()) {
                    private static final long serialVersionUID = 1771547719792642196L;

                    @Override
                    public void onClick(AjaxRequestTarget target) {
                        desinscrire(target, plongee, filleul);
                    }
                });

                String nomFilleul = filleul.getNom();
                String prenomFilleul = filleul.getPrenom();

                item.add(new Label("nom", nomFilleul));
                item.add(new Label("prenom", prenomFilleul));
                item.add(new Label("date", ResaUtil.getJourDatePlongee(plongee.getDatePlongee())));
                item.add(new Label("heure", ResaUtil.getHeurePlongee(plongee.getDatePlongee())));
                item.add(new Label("typePlongee", plongee.getTypePlongee().getText()));

                item.add(new AttributeModifier("class", true, new AbstractReadOnlyModel<String>() {
                    @Override
                    public String getObject() {
                        String cssClass;
                        if (item.getIndex() % 2 == 1) {
                            cssClass = "even";
                        } else {
                            cssClass = "odd";
                        }
                        boolean isInscrit = false;
                        for (Adherent adherent : plongee.getParticipants()) {
                            if (adherent.getNumeroLicense().equals(parrain.getNumeroLicense())) {
                                cssClass = cssClass + " inscrit";
                                isInscrit = true;
                            }
                        }
                        if (!plongee.isNbMiniAtteint(Parameters.getInt("nb.plongeur.mini"))) {
                            if (isInscrit) {
                                cssClass = cssClass + "MinimumPlongeur";
                            } else {
                                cssClass = cssClass + " minimumPlongeur";
                            }
                        }
                        return cssClass;
                    }
                }));
            }
        });

    }

    public void desinscrire(AjaxRequestTarget target, Plongee plongee, Adherent filleul) {
        //final Plongee plongee = iModel.getObject();
        try {
            //On considere que les Filleuls etants des externes
            //ne sont donc pas des encadrants
            //Donc pas de test sur l'apppartenance  l'encadrement
            //S'il y a des personnes en liste d'attente => mail aux ADMIN
            if (ResaSession.get().getPlongeeService().rechercherListeAttente(plongee).size() > 0) {
                ResaSession.get().getPlongeeService().deInscrireAdherent(plongee, filleul,
                        PlongeeMail.MAIL_PLACES_LIBRES);
            } else {
                ResaSession.get().getPlongeeService().deInscrireAdherent(plongee, filleul, PlongeeMail.PAS_DE_MAIL);
            }
            setResponsePage(new ListeInscritsPlongeePage(plongee));
        } catch (TechnicalException e) {
            e.printStackTrace();
            error(e.getKey());
        } catch (ResaException e) {
            String libRetour = "";
            if (e.getKey().startsWith(CatalogueMessages.DESINSCRIPTION_IMPOSSIBLE)) {
                String nbHeure = e.getKey().substring(23);
                IModel<Adherent> model = new Model<Adherent>(parrain);
                StringResourceModel srm = new StringResourceModel(CatalogueMessages.DESINSCRIPTION_IMPOSSIBLE, this,
                        model, new Object[] { new PropertyModel<Adherent>(model, "prenom"), nbHeure });
                libRetour = srm.getString();
            }
            error(libRetour);
        } finally {
            target.addComponent(feedback);
        }
    }
}