/*
 * 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.sucursales;

import com.cosmodas.FacadeCosmos.SucursalesFacadeLocal;
import com.cosmodas.EntCosmos.Sucursales;
import com.cosmodas.EntCosmos.WcUsuarios;
import java.awt.Event;
import java.io.Serializable;
import java.util.Formatter;
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 org.primefaces.PrimeFaces;

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

    private List<Sucursales> detalleSuc;

    private List<Sucursales> filtroSucursales;
    private boolean disBoton = true;
    private ExternalContext exc;
    @Inject
    private Sucursales sucursal, seleccion;
    @Inject
    private WcUsuarios usuario;

    @EJB
    SucursalesFacadeLocal sucursalesFacadeLocal;

    public Sucursales getSucursal() {
        return sucursal;
    }

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

    public List<Sucursales> getFiltroSucursales() {
        return filtroSucursales;
    }

    public void setFiltroSucursales(List<Sucursales> filtroSucursales) {
        this.filtroSucursales = filtroSucursales;
    }

    public List<Sucursales> getDetalleSuc() {
        return detalleSuc;
    }

    public void setDetalleSuc(List<Sucursales> detalleSuc) {
        this.detalleSuc = detalleSuc;
    }

    public Sucursales getSeleccion() {
        return seleccion;
    }

    public void setSeleccion(Sucursales seleccion) {
        this.seleccion = seleccion;
        this.disBoton = false;
    }

    public sucursalesBeans() {
    }

    public boolean isDisBoton() {
        return disBoton;
    }

    public void setDisBoton(boolean disBoton) {
        this.disBoton = disBoton;
    }

    public void editarSucursal() {
        Sucursales suc = getSeleccion();

        if (!ValidadDatos(suc.getSalaFacturaInicio(), suc.getSalaFacturaFinal(),
                suc.getSalaFacturaSiguiente())) {
            setDetalleSuc(sucursalesFacadeLocal.listaPorSucursalDescarga(sucursal.getSucursalCodigo()));
            PrimeFaces.current().executeScript("PF('errorFact').show();");
        } else {
            sucursalesFacadeLocal.edit(suc);
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("info", "editado correctamente"));
        }
        FacesContext.getCurrentInstance().getApplication().getNavigationHandler().handleNavigation(FacesContext.getCurrentInstance(), null, "sucursales.xhtml");

    }

    public boolean ValidadDatos(String factInit, String facFin, String factSig) {

        boolean rs = false;
        boolean rsInt = false;
        boolean rsChar = true;

        if (ValidaCarFact(factInit) && ValidaCarFact(facFin) && ValidaCarFact(factSig)) {

        } else {
            rsChar = false;
        }

        String nuevoNumerFactura = null;
        Formatter fmt = new Formatter();

        int factInitNum = Integer.parseInt(factInit.substring(1));
        int factFinNum = Integer.parseInt(facFin.substring(1));
        int factSigNum = Integer.parseInt(factSig.substring(1));

        if (factInitNum <= factFinNum && factSigNum >= factInitNum && factSigNum <= factFinNum) {
            rsInt = true;
        } else {

        }
        if (rsChar && rsInt) {
            rs = true;
        }

        return rs;
    }

    public boolean ValidaCarFact(String facturaNumero) {
        boolean rs = false;
        String carFact = facturaNumero.substring(0, 1);

        if (carFact.equalsIgnoreCase("C") || carFact.equalsIgnoreCase("S") || carFact.equalsIgnoreCase("1") || carFact.equalsIgnoreCase("2")) {
            rs = true;
        }
        return rs;
    }

    public void cargarDeNuevo() {
        setDetalleSuc(sucursalesFacadeLocal.listaPorSucursalDescarga(sucursal.getSucursalCodigo()));
    }

    @PostConstruct
    public void init() {

        this.exc = FacesContext.getCurrentInstance().getExternalContext();
        this.sucursal = (Sucursales) exc.getSessionMap().get("sucursal");
        this.usuario = (WcUsuarios) exc.getSessionMap().get("usuario");

        if (usuario.getGrupoUsuario().getTipoGruposUsuarios()) {
            setDetalleSuc(sucursalesFacadeLocal.findAll());
        } else {
            setDetalleSuc(sucursalesFacadeLocal.listaPorSucursalDescarga(sucursal.getSucursalCodigo()));
        }

    }

}
