package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios;

import java.util.HashMap;
import java.util.Map;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.zkoss.util.resource.Labels;
import org.zkoss.zhtml.Messagebox;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zul.Datebox;
import org.zkoss.zul.Textbox;

import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioDescontos;
import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxPuntoVenta;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;

@Controller("relatorioDescontosController")
@Scope("prototype")
public class RelatorioDescontosController extends MyGenericForwardComposer {
	private static final long serialVersionUID = 1L;
	
	@Autowired
	private DataSource dataSourceRead;	
	
	private MyComboboxPuntoVenta cmbAgencia;
	private Datebox fecVentaInicial;
	private Datebox fecVentaFinal;
	private Textbox txtCodConvenio;
	
	public void onClick$btnExecutarRelatorio(Event ev) throws Exception {
		validarAntesImpressao();		
	}
	
	private void validarAntesImpressao() throws Exception {
		
		if(fecVentaInicial.getValue() == null) {
            Messagebox.show(
                    Labels.getLabel("relatorioDescontosController.info.fecVentaInicial"),
                    Labels.getLabel("relatorioDescontosController.window.title"),
                    Messagebox.OK, Messagebox.EXCLAMATION);
            return;
		}
		
		if(fecVentaFinal.getValue() == null) {
            Messagebox.show(
                    Labels.getLabel("relatorioDescontosController.info.fecVentaFinal"),
                    Labels.getLabel("relatorioDescontosController.window.title"),
                    Messagebox.OK, Messagebox.EXCLAMATION);
            return;
		}
		
		executarRelatorio();
	}

	private void executarRelatorio() throws Exception {
		Map<String, Object> parametros = new HashMap<String, Object>();
		parametros.put("fecVentaInicial", fecVentaInicial.getValue());
		parametros.put("fecVentaFinal", fecVentaFinal.getValue());
		parametros.put("codconvenio", txtCodConvenio.getValue());
		parametros.put("usuario", UsuarioLogado.getUsuarioLogado().getUsuarioId().toString() + " - " + UsuarioLogado.getUsuarioLogado().getNombusuario());
		parametros.put("nomeRelatorio", Labels.getLabel("relatorioDescontosController.window.title"));
		
		if (cmbAgencia.getSelectedIndex() != -1) {
			
			PuntoVenta puntoVenta = (PuntoVenta) cmbAgencia.getSelectedItem().getValue();
			parametros.put("idPuntoVenta", puntoVenta.getPuntoventaId());
			parametros.put("puntoVenta", puntoVenta.getPuntoventaId() + " - " + puntoVenta.getNombpuntoventa());
		}
		
		Relatorio relatorio = new RelatorioDescontos(parametros, dataSourceRead.getConnection());
		Map<String, Object> args = new HashMap<String, Object>();
		args.put("relatorio", relatorio);

		openWindow("/component/reportView.zul", Labels.getLabel("relatorioDescontosController.window.title"), args, MODAL);		
		
	}
	
	public MyComboboxPuntoVenta getCmbAgencia() {
		return cmbAgencia;
	}
	
	public void setCmbAgencia(MyComboboxPuntoVenta cmbAgencia) {
		this.cmbAgencia = cmbAgencia;
	}
	public Datebox getFecVentaInicial() {
		return fecVentaInicial;
	}
	public void setFecVentaInicial(Datebox fecVentaInicial) {
		this.fecVentaInicial = fecVentaInicial;
	}
	public Datebox getFecVentaFinal() {
		return fecVentaFinal;
	}
	public void setFecVentaFinal(Datebox fecVentaFinal) {
		this.fecVentaFinal = fecVentaFinal;
	}
	public Textbox getTxtCodConvenio() {
		return txtCodConvenio;
	}
	public void setTxtCodConvenio(Textbox txtCodConvenio) {
		this.txtCodConvenio = txtCodConvenio;
	}		
}