BillBean.java 1.83 KB
package fi.insomnia.bortal.beans;

import java.io.ByteArrayOutputStream;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import fi.insomnia.bortal.beanutil.AuthorisationBeanLocal;
import fi.insomnia.bortal.beanutil.AuthorisationBeanLocal.Right;
import fi.insomnia.bortal.beanutil.AuthorisationBeanLocal.RightType;
import fi.insomnia.bortal.beanutil.PdfPrinter;
import fi.insomnia.bortal.facade.BillFacade;
import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.User;

/**
 * Session Bean implementation class BillBean
 */
@Stateless
public class BillBean implements BillBeanLocal {

    @EJB
    private BillFacade billFacade;

    @EJB
    private UserBeanLocal userBean;

    @EJB
    private SecurityBeanLocal secubean;

    @EJB
    private AuthorisationBeanLocal authbean;
    @EJB
    private EventBeanLocal eventbean;

    /**
     * Default constructor.
     */
    public BillBean() {
        // TODO Auto-generated constructor stub
    }

    public Bill findById(int id) {
        LanEvent event = eventbean.getCurrentEvent();
        if (id <= 0) {
            return null;
        }
        Bill bill = billFacade.find(event.getId(), id);
        User currentuser = userBean.getCurrentUser();

        if (!currentuser.equals(bill.getUser()))
            if (!authbean.isAuthorised(currentuser, Right.ADMIN, RightType.READ)) {
                {
                    secubean.logPermissionDenied(currentuser,
                            "User tried to print the bill with insufficient rights. Bill id: " + bill);
                    return null;
                }
            }

        return bill;

    }

    @Override
    public ByteArrayOutputStream getPdfBillStream(Bill bill) {
        if (bill == null) {
            return null;
        }
        return new PdfPrinter(bill).output();
    }

}