BillManageView.java 2.67 KB
package fi.insomnia.bortal.view;

import java.util.Calendar;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.ListDataModel;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import fi.insomnia.bortal.beans.BillBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.beans.UtilBeanLocal;
import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.model.BillLine;
import fi.insomnia.bortal.util.MailMessage;
import fi.insomnia.bortal.utilities.I18n;

@ManagedBean(name = "billManageView")
@SessionScoped
public class BillManageView extends GenericView {

    private static final Logger logger = LoggerFactory.getLogger(BillManageView.class);
    @EJB
    private BillBeanLocal billbean;

    private Bill bill;
    private ListDataModel<Bill> bills;
    @EJB
    private UserBeanLocal userBean;
    @EJB
    private UtilBeanLocal utilbean;
    private ListDataModel<BillLine> billines;

    public ListDataModel<Bill> getBills() {
        userBean.fatalNotLoggedIn();
        bills = new ListDataModel<Bill>(billbean.findAll());
        return bills;
    }

    public String saveBilline() {
        if (billines != null) {
            logger.debug("Saving bill line {}", billines.getRowData());
        }
        return null;
    }

    public ListDataModel<BillLine> getBillLines() {
        billines = new ListDataModel<BillLine>(bill.getBillLines());

        return billines;
    }

    public String edit() {
        userBean.fatalPermission(Permission.BILL, RolePermission.WRITE, "User tried to edit bill " + bills.getRowData() + " without sufficient permission");
        setBill(bills.getRowData());

        return "edit";
    }

    public void setBill(Bill bill) {
        this.bill = bill;
    }

    public Bill getBill() {
        return bill;
    }

    public String markPaid() {
        userBean.fatalPermission(Permission.BILL, RolePermission.WRITE, "User tried to mark bill " + bills.getRowData() + " paid without sufficient permission");

        bill = bills.getRowData();
        billbean.markPaid(bill, Calendar.getInstance());
        MailMessage msg = new MailMessage();
        msg.setSubject(I18n.get("bill.billMarkedPaidMail.subject"));
        msg.setMessage(I18n.get("bill.billMarkedPaidMail.message", (bill.getBillNumber() == null) ? "----" : bill.getBillNumber().toString()));
        msg.setTo(bill.getUser());
        utilbean.sendMail(msg);
        return "";
    }

    public boolean isManage() {
        return userBean.hasPermission(Permission.BILL, RolePermission.WRITE);
    }
}