ProductView.java 5.29 KB
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fi.insomnia.bortal.view;

import java.math.BigDecimal;
import java.util.List;

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

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

import fi.insomnia.bortal.beans.DiscountBeanLocal;
import fi.insomnia.bortal.beans.ProductBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.model.Discount;
import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.view.helpers.ProductShopItem;

/**
 * 
 * @author jkj
 */
@ManagedBean(name = "oldproductView")
@SessionScoped
public class ProductView {
    private static final Logger logger = LoggerFactory.getLogger(ProductView.class);

    @EJB
    private ProductBeanLocal productBean;

    @EJB
    private UserBeanLocal userBean;

    private String productname = "";
    private BigDecimal productprice = BigDecimal.ZERO;
    private EventMap activeMap = null;
    private ListDataModel<ProductShopItem> billCart;
    private Product product;
    private ListDataModel<Product> products;

    private DataModel<Discount> discounts;

    private Discount discount;
    private String discountdesc;

    @EJB
    private DiscountBeanLocal discountbean;

    public DataModel<Discount> getProductDiscounts() {
        discounts = new ListDataModel<Discount>(product.getDiscounts());
        return discounts;
    }

    public String editDiscount() {
        discount = discounts.getRowData();
        return "editDiscount";
    }

    public String createDiscount() {
        userBean.fatalPermission(Permission.PRODUCT, RolePermission.WRITE, "Tried to create discount without sufficient rights");
        logger.debug("Creating product discount {} for product {}", discountdesc, product);
      
        discount = discountbean.create(getDiscountdesc());
        product.getDiscounts().add(discount);
        productBean.mergeChanges(product);
        return "editDiscount";
    }

    public String saveDiscount() {
        userBean.fatalPermission(Permission.PRODUCT, RolePermission.WRITE, "Tried to edit discount without sufficient rights");
        discount = discountbean.save(discount);

        return "editDiscount";
    }

    public DataModel<Product> getProducts() {
        userBean.fatalPermission(Permission.PRODUCT, RolePermission.READ, "User has no right to view products");
        products = new ListDataModel<Product>(getProductlist());
        return products;
    }

    public List<Product> getProductlist()
    {
        return productBean.getProducts();
    }

    public void createProduct() {
        userBean.fatalPermission(Permission.PRODUCT, RolePermission.WRITE);

        setProduct(productBean.createProduct(productname, productprice));
        productprice = BigDecimal.ZERO;
        productname = "";

        // return "edit";
    }

    public String edit() {
        userBean.fatalPermission(Permission.PRODUCT, RolePermission.WRITE);
        product = products.getRowData();
        return "edit";
    }

    public void saveProduct() {
        userBean.fatalPermission(Permission.PRODUCT, RolePermission.WRITE);
        logger.debug("Prepaidbit: {}", product.isPrepaid());

        product = productBean.mergeChanges(product);
    }

    /**
     * @return the activeMap
     */
    public EventMap getActiveMap() {
        userBean.fatalPermission(Permission.MAP, RolePermission.READ);
        return activeMap;
    }

    /**
     * @param activeMap
     *            the activeMap to set
     */
    public void setActiveMap(EventMap activeMap) {
        this.activeMap = activeMap;
    }

    public void setProductname(String productname) {
        this.productname = productname;
    }

    public String getProductname() {
        return productname;
    }

    public void setProductprice(BigDecimal productprice) {
        this.productprice = productprice;
    }

    public BigDecimal getProductprice() {
        return productprice;
    }

    public void setProduct(Product product) {
        this.product = product;
    }

    public Product getProduct() {
        return product;
    }

    public void setDiscountdesc(String discountdesc) {
        this.discountdesc = discountdesc;
    }

    public String getDiscountdesc() {
        return discountdesc;
    }

    public Discount getDiscount() {
        return discount;
    }

    /*
     * public String placeMapActionListener(ActionEvent e) {
     * 
     * if(activeMap == null) throw new
     * UnsupportedOperationException("TODO error message");
     * 
     * 
     * 
     * 
     * 
     * 
     * FacesContext context = FacesContext.getCurrentInstance(); String clientId
     * = e.getComponent().getClientId(context); Map requestParams =
     * context.getExternalContext().getRequestParameterMap(); int x = new
     * Integer((String) requestParams.get(clientId + ".x")).intValue(); int y =
     * new Integer((String) requestParams.get(clientId + ".y")).intValue();
     * 
     * System.out.println("x: " + x + ", y:" + y);
     * 
     * throw new UnsupportedOperationException(); }
     */
}