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

import com.cosmodas.EntCosmos.*;
import com.cosmodas.FacadeCosmos.GeneralesFacadeLocal;
import com.cosmodas.FacadeCosmos.SucursalesFacadeLocal;
import com.cosmodas.FacadeCosmos.Top20FacadeLocal;
import com.cosmodas.FacadeCosmos.VPedidosFacadeAppsLocal;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;

/**
 *
 * @author obper
 */
@Named(value = "infosDashboard")
@ViewScoped
public class infosDashboard implements Serializable {

    @EJB
    SucursalesFacadeLocal sfl;
    @EJB
    Top20FacadeLocal top20fl;
    @EJB
    VPedidosFacadeAppsLocal vpafl;
    @EJB
    GeneralesFacadeLocal gfl;

    private WcUsuarios user;
    @Inject
    private Sucursales sucursal;
    private ExternalContext exc;
    private String ventaTotalConIva;
    private String ventaTotalSinIva;
    private String clientesSinPedido;
    private String clientesConPedido;
    private List<Top20> productosMasVendidos;
    private String impresorComanda;
    private List<VventasSalas> ventaSalas;
    private List<VPedidosApps> pedidosApps;
    private String programaCodigo;
    private Generales general;

    public Generales getGeneral() {
        return general;
    }

    public void setGeneral(Generales general) {
        this.general = general;
    }

    public String getProgramaCodigo() {
        return programaCodigo;
    }

    public void setProgramaCodigo(String programaCodigo) {
        this.programaCodigo = programaCodigo;
    }

    public List<VventasSalas> getVentaSalas() {
        return ventaSalas;
    }

    public void setVentaSalas(List<VventasSalas> ventaSalas) {
        this.ventaSalas = ventaSalas;
    }

    public WcUsuarios getUser() {
        return user;
    }

    public void setUser(WcUsuarios user) {
        this.user = user;
    }

    public Sucursales getSucursal() {
        return sucursal;
    }

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

    public ExternalContext getExc() {
        return exc;
    }

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

    public String getVentaTotalConIva() {
        return ventaTotalConIva;
    }

    public void setVentaTotalConIva(String ventaTotalConIva) {
        this.ventaTotalConIva = ventaTotalConIva;
    }

    public String getVentaTotalSinIva() {
        return ventaTotalSinIva;
    }

    public void setVentaTotalSinIva(String ventaTotalSinIva) {
        this.ventaTotalSinIva = ventaTotalSinIva;
    }

    public String getClientesSinPedido() {
        return clientesSinPedido;
    }

    public void setClientesSinPedido(String clientesSinPedido) {
        this.clientesSinPedido = clientesSinPedido;
    }

    public String getClientesConPedido() {
        return clientesConPedido;
    }

    public void setClientesConPedido(String clientesConPedido) {
        this.clientesConPedido = clientesConPedido;
    }

    public List<Top20> getProductosMasVendidos() {
        return productosMasVendidos;
    }

    public void setProductosMasVendidos(List<Top20> productosMasVendidos) {
        this.productosMasVendidos = productosMasVendidos;
    }

    public String getImpresorComanda() {
        return impresorComanda;
    }

    public void setImpresorComanda(String impresorComanda) {
        this.impresorComanda = impresorComanda;
    }

    public List<VPedidosApps> getPedidosApps() {
        return pedidosApps;
    }

    public void setPedidosApps(List<VPedidosApps> pedidosApps) {
        this.pedidosApps = pedidosApps;
    }

    @PostConstruct
    public void init() {
        this.exc = FacesContext.getCurrentInstance().getExternalContext();
        this.user = (WcUsuarios) exc.getSessionMap().get("usuario");
        this.impresorComanda = "--";

        exc.getSessionMap().put("sucursal", getSucursal());
        exc.getSessionMap().put("ompp", getImpresorComanda());

        BigDecimal ventaTotoalBD = new BigDecimal(top20fl.totalVenta() / 1.13);
        BigDecimal ventaTotoalBDS = ventaTotoalBD.setScale(2, ventaTotoalBD.ROUND_UP);

        BigDecimal conIva = new BigDecimal(top20fl.totalVenta());
        BigDecimal conIvaBDS = conIva.setScale(2, conIva.ROUND_UP);



        this.clientesConPedido = top20fl.totalClienteConPedidos().toString();
        this.clientesSinPedido = top20fl.totalClientesSinPedido().toString();
        this.ventaTotalConIva = conIvaBDS.toString();
        this.productosMasVendidos = top20fl.findAll();
        this.ventaTotalSinIva = ventaTotoalBDS.toString();
        this.ventaSalas = sfl.ventasSalas();

        general = gfl.findAll().get(0);
        this.programaCodigo = general.getPrograma();

        this.pedidosApps = vpafl.pedidosPorMes(programaCodigo);

    }

    public void actualizarPedidosApps(){
        this.pedidosApps = vpafl.pedidosPorMes(programaCodigo);
    }

    public Integer totalPedidos(List<VPedidosApps> in){

        Integer rs = 0;

        for (VPedidosApps f : in){

            try{
                rs = rs + f.getPedidos();
            }catch (Exception e){
                System.out.println(e.toString());
            }


        }

        return  rs;

    }


    public infosDashboard() {
    }

}
