package com.cosmodas.Inventario;

import com.cosmodas.EntCosmos.Generales;
import com.cosmodas.EntCosmos.StatusProductos;
import com.cosmodas.EntCosmos.Sucursales;
import com.cosmodas.EntCosmos.WcUsuarios;
import com.cosmodas.FacadeCosmos.GeneralesFacadeLocal;
import com.cosmodas.FacadeCosmos.SucursalesFacadeLocal;
import net.sf.jasperreports.engine.JasperPrint;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.servlet.http.HttpSession;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

@ManagedBean
@SessionScoped
public class bpredictivo implements Serializable {

    @EJB
    GeneralesFacadeLocal gfl;
    @EJB
    SucursalesFacadeLocal sfl;


    private JasperPrint jasperPrint;
    private ExternalContext exc;
    private HttpSession session;
    private Integer cantidad;
    private String programa;
    @Inject
    private Sucursales sucursal;
    @Inject
    private WcUsuarios usuario;
    private List<StatusProductos> listaPredictivo;
    private List<Sucursales> sucursalesAgignadas;


    public JasperPrint getJasperPrint() {
        return jasperPrint;
    }

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

    public ExternalContext getExc() {
        return exc;
    }

    public void setExc(ExternalContext exc) {
        this.exc = exc;
    }

    public HttpSession getSession() {
        return session;
    }

    public void setSession(HttpSession session) {
        this.session = session;
    }

    public Integer getCantidad() {
        return cantidad;
    }

    public void setCantidad(Integer cantidad) {
        this.cantidad = cantidad;
    }

    public Sucursales getSucursal() {
        return sucursal;
    }

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

    public WcUsuarios getUsuario() {
        return usuario;
    }

    public void setUsuario(WcUsuarios usuario) {
        this.usuario = usuario;
    }

    public List<StatusProductos> getListaPredictivo() {
        return listaPredictivo;
    }

    public void setListaPredictivo(List<StatusProductos> listaPredictivo) {
        this.listaPredictivo = listaPredictivo;
    }

    public bpredictivo() {
    }

    public void cantidadMeno(int c){
        this.cantidad = c;
    }

    public void listPorSala(String sucursal, int c) {
        listaPredictivo = gfl.obtnerPredictivo(sucursal, programa, c);
    }


    public String getPrograma() {
        return programa;
    }

    public void setPrograma(String programa) {
        this.programa = programa;
    }

    public List<Sucursales> getSucursalesAgignadas() {
        return sucursalesAgignadas;
    }

    public void setSucursalesAgignadas(List<Sucursales> sucursalesAgignadas) {
        this.sucursalesAgignadas = sucursalesAgignadas;
    }

    @PostConstruct
    public void init() {
        Generales g = gfl.findAll().get(0);
        cantidad = 500000;
        exc = FacesContext.getCurrentInstance().getExternalContext();
        usuario = (WcUsuarios) exc.getSessionMap().get("usuario");
        programa = g.getPrograma();
        sucursalesAgignadas = new ArrayList<>();
        sucursal = (Sucursales) exc.getSessionMap().get("sucursal");
        asignaSucursales(usuario);
        if(sucursal.getSucursalCodigo().equals("01")){
            listaPredictivo = gfl.obtnerPredictivo("02", programa, cantidad);
        }else{
            listaPredictivo = gfl.obtnerPredictivo(sucursal.getSucursalCodigo(), programa, cantidad);
        }

        //     ompp = exc.getSessionMap().get("ompp").toString();

    }

    private void asignaSucursales(WcUsuarios u){

        if (u.getGrupoUsuario().getTipoGruposUsuarios()){
            sucursalesAgignadas.add(sfl.find("02"));
            sucursalesAgignadas.add(sfl.find("03"));
            sucursalesAgignadas.add(sfl.find("04"));
            sucursalesAgignadas.add(sfl.find("05"));
            sucursalesAgignadas.add(sfl.find("06"));
            sucursalesAgignadas.add(sfl.find("07"));
            sucursalesAgignadas.add(sfl.find("08"));
            sucursalesAgignadas.add(sfl.find("11"));

            Sucursales suco = sfl.find("01");
            suco.setSalaNombreCorto("GENERAL");

            sucursalesAgignadas.add(suco);

        }else{
            sucursalesAgignadas.add(sfl.find(u.getSucursal()));
        }

    }

    public String noFacturadosColor(StatusProductos s){

        String rs = "#3e7f5b";

        try{
            Integer rso = s.getPedidos() - s.getFacturados();

            if (rso >= 0){
                rs = "#ff5555";
            }
        }catch (Exception e){
        }


        return rs;
    }

    public Integer noFacturados(StatusProductos s){

        Integer rs = 0;
        try{
        Integer rso = s.getPedidos() - s.getFacturados();

        if (rso >= 0){
            rs = rso;
        }
        }catch (Exception e){
        }
        return rs;
    }

}