/*
 * 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 com.cosmodas.Inventario;

import com.cosmodas.FacadeCosmos.daoProSucLocal;
import com.cosmodas.EntCosmos.Productosucursal;
import com.cosmodas.EntCosmos.Sucursales;
import javax.enterprise.context.SessionScoped;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import net.sf.jasperreports.engine.JasperPrint;
import org.primefaces.PrimeFaces;
import org.primefaces.component.datatable.DataTable;
import org.primefaces.event.CellEditEvent;

/**
 *
 * @author obper
 */
@ManagedBean
@SessionScoped
public class bsucursal implements Serializable {

    @EJB
    daoProSucLocal dao;

    //--------------------variables
    private List<Productosucursal> producAll;
    private List<Productosucursal> productoSucursal;
    private String productoCodigo;
    private Productosucursal objProducto;
    private int productoFisico;
    private String producFisico = "";
    private String sucurSal;
    private String suc;
    private JasperPrint jasperPrint;
    private ExternalContext exc;

    @Inject
    private Sucursales sucursal;

    public Sucursales getSucursal() {
        return sucursal;
    }

    public void setSucursal(Sucursales sucursal) {
        this.sucursal = sucursal;
    }

    public JasperPrint getJasperPrint() {
        return jasperPrint;
    }

    public void setJasperPrint(JasperPrint jasperPrint) {
        this.jasperPrint = jasperPrint;
    }

    @PostConstruct
    public void init() {
        this.exc = FacesContext.getCurrentInstance().getExternalContext();
        this.sucursal = (Sucursales) exc.getSessionMap().get("sucursal");
        productoSucursal = getProductosucursals();
    }

    public List<Productosucursal> getProductoSucursal() {
        return productoSucursal;
    }

    public void setProductoSucursal(List<Productosucursal> productoSucursal) {
        this.productoSucursal = productoSucursal;
    }

    //----------getters and setters----
    public String getSucurSal() {
        return sucurSal;
    }

    public String getSuc() {
        return suc;
    }

    public void setSuc(String suc) {
        this.suc = suc;
    }

    public void setSucurSal(String sucurSal) {
        this.sucurSal = sucurSal;
        setSuc(sucursal.getSucursalCodigo());
    }

    public String getProducFisico() {
        return producFisico;
    }

    public void setProducFisico(String producFisico) {
        this.producFisico = producFisico;
    }

    public int getProductoFisico() {
        return productoFisico;
    }

    public void setProductoFisico(int productoFisico) {
        this.productoFisico = productoFisico;
    }

    public String getProductoCodigo() {
        return productoCodigo;
    }

    public void setProductoCodigo(String productoCodigo) {
        this.productoCodigo = productoCodigo;
    }

    public Productosucursal getObjProducto() {
        return objProducto;
    }

    public void setObjProducto(Productosucursal objProducto) {
        this.objProducto = objProducto;
    }

    public List<Productosucursal> getProducAll() {
        return dao.sucursalPorCodigo(sucursal.getSucursalCodigo());
    }

    public void setProducAll(List<Productosucursal> producAll) {
        //this.producAll = producAll;
        // dao.update(procSu);
    }

    //-------update
    public List<Productosucursal> getProductosucursals() {
        List<Productosucursal> j = new ArrayList<>();
        j = dao.sucursalPorCodigo(sucursal.getSucursalCodigo());
        List<Productosucursal> k = new ArrayList<>();
        for (Productosucursal i : j) {
            if (i.getProductos().getDiscontinuado().equalsIgnoreCase("13")) {
            } else {
                k.add(i);
            }

        }
        return k;
    }
    //-----------------

//----------------------------------------------------
    public List<Productosucursal> getDiscoProductosucursals() {
        List<Productosucursal> j = new ArrayList<>();
        j = dao.sucursalPorCodigo(sucursal.getSucursalCodigo());
        List<Productosucursal> k = new ArrayList<>();
        for (Productosucursal i : j) {
            if (i.getProductos().getDiscontinuado().equalsIgnoreCase("13")) {
                k.add(i);
            } else {

            }

        }
        return k;
    }

    public void onCellEdit(CellEditEvent event) {
        try {
            Object id = event.getRowIndex();
            Object oldValue = event.getOldValue();
            Object newValue = event.getNewValue();
            int newInt = Integer.parseInt(newValue.toString());

            if (!newValue.equals(oldValue)) {
                FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Editado", "Nuevo entrada: " + newValue);
                FacesContext.getCurrentInstance().addMessage(null, msg);
                DataTable s = (DataTable) event.getSource();
                Productosucursal d = (Productosucursal) s.getRowData();
                d.setProductoSucursalFisica(newInt);
                dao.update(d);

            } else {
            }

        } catch (Exception e) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "NO SE PUEDE GUARDAR", "HA HABIDO UN ERROR REFRESQUE EL NAVEGADOR O REINICIE SESION");

            PrimeFaces.current().dialog().showMessageDynamic(message);

        }
    }

    public bsucursal() {
    }

}
