/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package plate.wellmann.shop.controller;

import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import plate.wellmann.shop.business.ShoppingcartManager;
import plate.wellmann.shop.persistence.Item;
import java.util.List;
import javax.transaction.Transactional;

/**
 *
 * @author Patrick
 */
@SessionScoped
@Named
public class ShoppingcartController implements Serializable{
    @Inject
    ShoppingcartManager cartManager;
    
    public void addItem(Item item, Integer size){
        if (item == null) {
            return;
        }
        cartManager.addItem(item, size);
    }
    
    public List<Item> getItems(){
        return cartManager.getItems();
    }
    
    public void deleteItem(Long id){
        if (id == null) {
            error("Element konnte nicht aus Warenkorb entfernt werden!");
            return;
        }
        boolean status = cartManager.deleteItem(id);
        if (status) {
            info("Element wurde vom Warenkorb entfernt!");
        } else {
            error("Element konnte nicht aus Warenkorb entfernt werden!");
        }
    }
    
    public boolean setQuantity(Item item, Integer size){
        boolean status = cartManager.setQuantity(item, size);
        if (status) {
            info(item.getName() +" wurde zum Warenkorb hinzugefügt!");
        } else {
            error(item.getName() +" konnte nicht zum Warenkorb hinzugefügt werden!");
        }
        return status;
    }
    
    private void error(String message) {
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Fehler", message));

    }

    private void info(String message) {
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Erfolg", message));
    }
    
    @Transactional
    public void demo(){
        cartManager.demo();
    }
}
