package de.hsel.itech.jsf; import de.hsel.itech.db.Database; import de.hsel.itech.db.pojo.*; import lombok.Setter; import javax.faces.annotation.ManagedProperty; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.context.FacesContext; import javax.faces.event.ValueChangeEvent; import java.sql.Date; import java.util.ArrayList; import java.util.List; @ManagedBean @SessionScoped public class CartBean { @Setter @ManagedProperty("#{userBean.user}") private User user; public User getUser() { FacesContext context = FacesContext.getCurrentInstance(); return (User) context.getApplication().evaluateExpressionGet(context, "#{userBean.user}", User.class); } public Payment getPayment () { FacesContext context = FacesContext.getCurrentInstance(); return (Payment) context.getApplication().evaluateExpressionGet(context, "#{paymentBean.selected}", Payment.class); } public Address getAddress() { FacesContext context = FacesContext.getCurrentInstance(); return (Address) context.getApplication().evaluateExpressionGet(context, "#{addressBean.selected}", Address.class); } @Setter private List items; public String add(Book book) { if (getUser() != null && getUser().getId() != 0) { for (ShoppingCartItem item : getItems()) { if (item.getArticle().getId() == book.getId()) { Database.getInstance().shoppingCart().delete(item); item.setCount(item.getCount() + 1); Database.getInstance().shoppingCart().insert(item); return "cart.jsf"; } } Database.getInstance().shoppingCart().insert(new ShoppingCartItem(getUser(), book, 1)); } return "cart.jsf"; } public String remove(ShoppingCartItem item) { if (getUser() != null) { Database.getInstance().shoppingCart().delete(item); } return "cart.jsf"; } public List getItems() { if(items != null) return items; Database db = Database.getInstance(); if (getUser() != null) { items = db.shoppingCart().get(getUser()); } else { items = new ArrayList(); } return items; } public void change(ValueChangeEvent event) { System.out.println("änderung"); for(ShoppingCartItem item : getItems()) { System.out.println(item.getCount()); } } public String buy() { ArrayList orderList = new ArrayList<>(); for (ShoppingCartItem item : getItems()) { orderList.add(new OrderItem(item.getArticle(), item.getCount())); } Database.getInstance().order().insert(new Order(getUser(), orderList, new Date(System.currentTimeMillis()), sum(), getPayment(), getAddress())); for (ShoppingCartItem item : getItems()) { Database.getInstance().shoppingCart().delete(item); } return "thanks.jsf"; } public int getItemCount() { return getItems().size(); } public long sum() { int sum = 0; for (ShoppingCartItem item : getItems()) { sum += item.getCount() * item.getArticle().getPrice(); } return sum; } public String getSum() { long sum = sum(); String res = ""; res += sum / 100; res += ","; if (sum % 100 < 10) { res += "0"; } res += sum % 100; return res; } }