/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.rjconsultores.ventaboletos.web.gui.controladores.financeiro;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
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.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Datebox;

import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioFinanceiroGrupoLinhas;
import com.rjconsultores.ventaboletos.service.FormaPagamentoAgenciaService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEstandar;
import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxPuntoVenta;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;

/**
 * 
 * @author Administrador
 */
@Controller("financeiroGrupoLinhasController")
@Scope("prototype")
public class FinanceiroGrupoLinhasController extends MyGenericForwardComposer {

	@Autowired
	private FormaPagamentoAgenciaService financeiroService;
	
	@Autowired
	private DataSource dataSourceRead;

	private Datebox fecInicio;
	private Datebox fecFinal;
	private Checkbox somenteCancelados;
	
	private MyComboboxEstandar cmbEmpresa;
	private List<Empresa> lsEmpresas;
	
	private MyComboboxPuntoVenta cmbAgencia;
	
	@Override
	public void doAfterCompose(Component comp) throws Exception {		
		
		lsEmpresas = UsuarioLogado.getUsuarioLogado().getEmpresa();
		
		super.doAfterCompose(comp);
	}
	
	
	public Checkbox getSomenteCancelados() {
		return somenteCancelados;
	}


	public void setSomenteCancelados(Checkbox somenteCancelados) {
		this.somenteCancelados = somenteCancelados;
	}


	public MyComboboxPuntoVenta getCmbAgencia() {
		return cmbAgencia;
	}


	public void setCmbAgencia(MyComboboxPuntoVenta cmbAgencia) {
		this.cmbAgencia = cmbAgencia;
	}


	public FormaPagamentoAgenciaService getFinanceiroService() {
		return financeiroService;
	}

	public void setFinanceiroService(FormaPagamentoAgenciaService financeiroService) {
		this.financeiroService = financeiroService;
	}

	public DataSource getDataSourceRead() {
		return dataSourceRead;
	}

	public void setDataSourceRead(DataSource dataSourceRead) {
		this.dataSourceRead = dataSourceRead;
	}

	public MyComboboxEstandar getCmbEmpresa() {
		return cmbEmpresa;
	}

	public void setCmbEmpresa(MyComboboxEstandar cmbEmpresa) {
		this.cmbEmpresa = cmbEmpresa;
	}

	public List<Empresa> getLsEmpresas() {
		return lsEmpresas;
	}

	public void setLsEmpresas(List<Empresa> lsEmpresas) {
		this.lsEmpresas = lsEmpresas;
	}

	public Datebox getFecFinal() {
		return fecFinal;
	}

	public void setFecFinal(Datebox fecFinal) {
		this.fecFinal = fecFinal;
	}

	public Datebox getFecInicio() {
		return fecInicio;
	}

	public void setFecInicio(Datebox fecInicio) {
		this.fecInicio = fecInicio;
	}

	public void onClick$btnInforme(Event e) throws Exception {
		Date dataInicio = fecInicio.getValue();
		Date dataFinal = fecFinal.getValue();

		Map argsInforme = new HashMap();
		argsInforme.put("DATA_INICIAL", dataInicio);
		argsInforme.put("DATA_FINAL", dataFinal);
		argsInforme.put("SOMENTE_CANCELADOS", somenteCancelados.isChecked());
		
		if (cmbEmpresa.isValid() && cmbEmpresa.getSelectedItem() != null) {
			Integer empresaId = ((Empresa)cmbEmpresa.getSelectedItem().getValue()).getEmpresaId();
			argsInforme.put("EMPRESA", empresaId);
		}
		
		if (cmbAgencia.getSelectedItem() != null) {
			Integer agencia = ((PuntoVenta) cmbAgencia.getSelectedItem().getValue()).getPuntoventaId();
			argsInforme.put("AGENCIA", agencia);
		}
		
		RelatorioFinanceiroGrupoLinhas relatorio = new RelatorioFinanceiroGrupoLinhas(argsInforme, dataSourceRead.getConnection());
		
		Map args = new HashMap();
		args.put("relatorio", relatorio);

		openWindow("/component/reportView.zul",
				Labels.getLabel("financeiroGrupoLinhasController.window.title"), args, MODAL);

	}
}
