dk.teachus.frontend.pages.PaymentPage.java Source code

Java tutorial

Introduction

Here is the source code for dk.teachus.frontend.pages.PaymentPage.java

Source

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package dk.teachus.frontend.pages;

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

import org.apache.wicket.Application;
import org.apache.wicket.RestartResponseAtInterceptPageException;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;

import dk.teachus.backend.dao.BookingDAO;
import dk.teachus.backend.domain.Pupil;
import dk.teachus.backend.domain.PupilBooking;
import dk.teachus.backend.domain.Teacher;
import dk.teachus.frontend.TeachUsApplication;
import dk.teachus.frontend.TeachUsSession;
import dk.teachus.frontend.UserLevel;
import dk.teachus.frontend.components.list.FunctionItem;
import dk.teachus.frontend.components.list.FunctionsColumn;
import dk.teachus.frontend.components.list.ListPanel;
import dk.teachus.frontend.components.list.RendererPropertyColumn;
import dk.teachus.frontend.functions.CancelPubilBookingFunction;
import dk.teachus.frontend.functions.PaidFunction;
import dk.teachus.frontend.utils.CurrencyChoiceRenderer;
import dk.teachus.frontend.utils.DateChoiceRenderer;
import dk.teachus.frontend.utils.TimeChoiceRenderer;

public class PaymentPage extends AuthenticatedBasePage {
    private static final long serialVersionUID = 1L;

    public PaymentPage() {
        super(UserLevel.PUPIL);

        init();
    }

    private void init() {
        List<FunctionItem> functions = new ArrayList<FunctionItem>();

        if (TeachUsSession.get().getUserLevel() == UserLevel.TEACHER) {
            functions.add(new PaidFunction());
        }

        functions.add(new CancelPubilBookingFunction() {
            private static final long serialVersionUID = 1L;

            @Override
            protected void onBookingCancelled() {
                getRequestCycle().setResponsePage(PaymentPage.class);
            }
        });

        List<IColumn> columns = new ArrayList<IColumn>();
        columns.add(new PropertyColumn(new Model(TeachUsSession.get().getString("General.pupil")), "pupil.name", //$NON-NLS-1$//$NON-NLS-2$
                "pupil.name"));
        columns.add(new RendererPropertyColumn(new Model(TeachUsSession.get().getString("General.date")), "date", //$NON-NLS-1$//$NON-NLS-2$
                "date", new DateChoiceRenderer()));
        columns.add(new RendererPropertyColumn(new Model(TeachUsSession.get().getString("General.time")), "date", //$NON-NLS-1$//$NON-NLS-2$
                new TimeChoiceRenderer()));
        columns.add(new RendererPropertyColumn(new Model(TeachUsSession.get().getString("General.price")), //$NON-NLS-1$
                "period.price", "period.price", new CurrencyChoiceRenderer())); //$NON-NLS-1$
        columns.add(new FunctionsColumn(new Model(TeachUsSession.get().getString("General.functions")), functions));

        IModel bookingsModel = new LoadableDetachableModel() {
            private static final long serialVersionUID = 1L;

            @Override
            protected Object load() {
                BookingDAO bookingDAO = TeachUsApplication.get().getBookingDAO();
                List<PupilBooking> pupilBookings = null;

                if (TeachUsSession.get().getPerson() instanceof Pupil) {
                    pupilBookings = bookingDAO.getUnpaidBookings((Pupil) TeachUsSession.get().getPerson());
                } else if (TeachUsSession.get().getPerson() instanceof Teacher) {
                    pupilBookings = bookingDAO.getUnpaidBookings((Teacher) TeachUsSession.get().getPerson());
                } else {
                    throw new RestartResponseAtInterceptPageException(Application.get().getHomePage());
                }

                return pupilBookings;
            }

        };

        add(new ListPanel("list", columns, new PaymentDataProvider(bookingsModel)));
    }

    @Override
    public AuthenticatedPageCategory getPageCategory() {
        return AuthenticatedPageCategory.PAYMENT;
    }

}