/*
 * 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.creditos;
//
//import antlr.debug.Event;

import com.cosmodas.FacadeCosmos.CargosFacadeLocal;
import com.cosmodas.FacadeCosmos.DeptoMunicipioFacadeLocal;
import com.cosmodas.FacadeCosmos.EntregaPremiosFacadeLocal;
import com.cosmodas.FacadeCosmos.FacadeConsultoresLocal;
import com.cosmodas.FacadeCosmos.SucursalesFacadeLocal;
import com.cosmodas.FacadeCosmos.VConsultorewsFacadeLocal;
import com.cosmodas.EntCosmos.Consultores;
import com.cosmodas.EntCosmos.VConsultorews;
import com.cosmodas.EntCosmos.proKardex;
import com.cosmodas.EntCosmos.proPremios;
import java.awt.Event;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import org.primefaces.PrimeFaces;

/**
 *
 * @author obper
 */
@ManagedBean
@javax.faces.bean.ViewScoped
public class consulta implements Serializable {

    @EJB
    FacadeConsultoresLocal daoConsultor;
    @EJB
    DeptoMunicipioFacadeLocal daoMunicipio;
    @EJB
    SucursalesFacadeLocal daoSucursalLo;
    @EJB
    EntregaPremiosFacadeLocal entregaPremiosFacade;
    @EJB
    CargosFacadeLocal ccflo;
    @EJB
    private VConsultorewsFacadeLocal vcwfl;

    private String consultorCodigo;
    private String consultorCodigoKardex;
    private String consultorNombre1;
    private String consultorApellido1;
    private String consultorNombre2;
    private String consultorApellido2;
    private String consultorNit;
    private String consultorNumeroDucomento;
    private String consultorSexo;
    @Inject
    private Consultores consultor;
    private List<Consultores> ListaBusquedaNombres;
    @Inject
    private Consultores consultorSelect;
    private Date fechaInicioBusqueda;
    private Date fechafinBusqueda;
    private String programaSel;
    private List<proKardex> listKardex;
    @Inject
    private proPremios pre;
    private String consultorSaldo;
    @Inject
    private VConsultorews connsultor;
    private List<VConsultorews> conns;
    private String cons;

//------------------GET & SET----------------//
    public VConsultorews getConnsultor() {
        return connsultor;
    }

    public void setConnsultor(VConsultorews connsultor) {
        this.connsultor = connsultor;
    }

    public List<VConsultorews> getConns() {
        return conns;
    }

    public void setConns(List<VConsultorews> conns) {
        this.conns = conns;
    }

    public String getCons() {
        return cons;
    }

    public void setCons(String cons) {
        this.cons = cons;
    }

    public String getConsultorCodigoKardex() {
        return consultorCodigoKardex;
    }

    public void setConsultorCodigoKardex(String consultorCodigoKardex) {
        this.consultorCodigoKardex = consultorCodigoKardex;
    }

    public String getConsultorSaldo() {
        return consultorSaldo;
    }

    public void setConsultorSaldo(String consultorSaldo) {
        this.consultorSaldo = consultorSaldo;
    }

    public String getConsultorCodigo() {
        return consultorCodigo;
    }

    public void setConsultorCodigo(String consultorCodigo) {
        this.consultorCodigo = consultorCodigo.toUpperCase();
    }

    public String getConsultorNombre1() {
        return consultorNombre1;
    }

    public void setConsultorNombre1(String consultorNombre1) {
        this.consultorNombre1 = consultorNombre1;
    }

    public String getConsultorApellido1() {
        return consultorApellido1;
    }

    public void setConsultorApellido1(String consultorApellido1) {
        this.consultorApellido1 = consultorApellido1;
    }

    public String getConsultorNit() {
        return consultorNit;
    }

    public void setConsultorNit(String consultorNit) {
        this.consultorNit = consultorNit;
    }

    public String getConsultorNumeroDucomento() {
        return consultorNumeroDucomento;
    }

    public void setConsultorNumeroDucomento(String consultorNumeroDucomentos) {
        this.consultorNumeroDucomento = consultorNumeroDucomentos;
    }

    public String getConsultorSexo() {
        return consultorSexo;
    }

    public void setConsultorSexo(String consultorSexo) {
        this.consultorSexo = consultorSexo;
    }

    public String getConsultorNombre2() {
        return consultorNombre2;
    }

    public void setConsultorNombre2(String consultorNombre2) {
        this.consultorNombre2 = consultorNombre2;
    }

    public String getConsultorApellido2() {
        return consultorApellido2;
    }

    public void setConsultorApellido2(String consultorApellido2) {
        this.consultorApellido2 = consultorApellido2;
    }

    public List<Consultores> getListaBusquedaNombres() {
        return ListaBusquedaNombres;
    }

    public void setListaBusquedaNombres(List<Consultores> ListaBusquedaNombres) {
        this.ListaBusquedaNombres = ListaBusquedaNombres;
    }

    public Consultores getConsultorSelect() {
        return consultorSelect;
    }

    public void setConsultorSelect(Consultores consultorSelect) {
        this.consultorSelect = consultorSelect;
    }

    public Date getFechaInicioBusqueda() {
        return fechaInicioBusqueda;
    }

    public void setFechaInicioBusqueda(Date fechaInicioBusqueda) {
        this.fechaInicioBusqueda = fechaInicioBusqueda;
    }

    public Date getFechafinBusqueda() {
        return fechafinBusqueda;
    }

    public void setFechafinBusqueda(Date fechafinBusqueda) {
        this.fechafinBusqueda = fechafinBusqueda;
    }

    public List<proKardex> getListKardex() {
        return listKardex;
    }

    public void setListKardex(List<proKardex> listKardex) {
        this.listKardex = listKardex;
    }

    public String getProgramaSel() {
        return programaSel;
    }

    public void setProgramaSel(String programaSel) {
        this.programaSel = programaSel;
    }

    public proPremios getPre() {
        return pre;
    }

    public void setPre(proPremios pre) {
        this.pre = pre;
    }

    //-----------------------------------------------
    public Consultores getConsultor() {
        return consultor;
    }

    public void setConsultor(Consultores consultor) {
        this.consultor = consultor;
    }

    //-------------------------------------------//
    public List<VConsultorews> complete(String query) {
        List<VConsultorews> q = new ArrayList<>();
        q = vcwfl.nombrePorLike(query);

        conns = q;

        return q;
    }

    public void BusquedaPorNombre() {
        List<Consultores> l = new ArrayList<>();
        l = daoConsultor.BusquedasPorNombre(consultorNombre1, consultorNombre2, consultorApellido1, consultorApellido2);
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("consultorKadexList", l);

        this.ListaBusquedaNombres = l;
    }

    public void bntBusqueda(Event event) {

        if (!consultorCodigo.isEmpty() && consultorCodigo.length() == 6) {
            buscarConsultor(getConsultorCodigo());
            connsultor = vcwfl.find(getConsultorCodigo());
        } else if (!consultorCodigo.isEmpty() && consultorCodigo.length() == 9) {
            buscarConsultor(daoConsultor.BusquedaPorDui(getConsultorCodigo()).getConsultorCodigo());
        }
        consultorCodigoKardex = consultorCodigo.toUpperCase();

    }

    public void obtenerCliente() {

        if (!consultorCodigo.isEmpty() && consultorCodigo.length() == 6) {
            buscarConsultor(getConsultorCodigo());
            connsultor = vcwfl.find(getConsultorCodigo());
        } else if (!consultorCodigo.isEmpty() && consultorCodigo.length() == 9) {
            buscarConsultor(daoConsultor.BusquedaPorDui(getConsultorCodigo()).getConsultorCodigo());
        }
       
    }

    public void buscarConsultor(String consultorCodigo) {

        this.consultor = daoConsultor.buscaConsultor(consultorCodigo);
        this.consultorSaldo = ccflo.obtenerCargos(consultorCodigo);
    }

    public void seteaVariables2() {

        try {

            if (connsultor.getConsultorCodigo() != null) {
                consultorCodigo = connsultor.getConsultorCodigo();

            }
            // this.productoSelect = producto;
        } catch (Exception e) {

        }
    }

    @PostConstruct
    public void init() {

        Calendar cal1 = Calendar.getInstance();
        cal1.add(Calendar.MONTH, -4);
        cal1.set(Calendar.DATE, 1);
        this.fechaInicioBusqueda = cal1.getTime();
        this.fechafinBusqueda = new Date();
        this.conns = new ArrayList<>();

    }

    public consulta() {
    }

    public void limpiaTextos(Event event) {

        connsultor = new VConsultorews();
        consultorCodigo = "";

    }

    public void chequeaPremio() {

        Calendar fecha = Calendar.getInstance();
        int anio = fecha.get(Calendar.YEAR);
        int mes = fecha.get(Calendar.MONTH) + 1;
        int dia = fecha.get(Calendar.DAY_OF_MONTH);
        int hora = fecha.get(Calendar.HOUR_OF_DAY);
        int minuto = fecha.get(Calendar.MINUTE);
        int segundo = fecha.get(Calendar.SECOND);

        String entregaPremio = "";
        entregaPremio = entregaPremiosFacade.vereificaPremio(consultor.getConsultorCodigo(), programaSel);
        if (!entregaPremio.equalsIgnoreCase("no")) {

            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "PREMIO ENTREGADO", "Premio en factura " + entregaPremio);
            PrimeFaces.current().dialog().showMessageDynamic(message);
            //RequestContext.getCurrentInstance().showMessageInDialog(message);
        } else {

            pre = daoSucursalLo.findCallProPremios(consultor.getConsultorCodigo(), programaSel, anio + "-" + mes + "-01", anio + "-" + mes + "-28").get(0);
        }
    }

    public void busquedaKardex() {
        if (!consultorCodigoKardex.isEmpty()) {
            buscarConsultor(consultorCodigoKardex);
        }

        this.listKardex = daoSucursalLo.findCallKardex(getConsultor().getConsultorCodigo(), fechaInicioBusqueda, fechafinBusqueda);
        System.out.println("");

    }

}
