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

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.Comboitem;
import org.zkoss.zul.Datebox;
import org.zkoss.zul.Radio;
import org.zkoss.zul.Radiogroup;

import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.GrupoContrato;
import com.rjconsultores.ventaboletos.enums.EstadoBilheteConsultarEnum;
import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioSaldosDeContratos;
import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio;
import com.rjconsultores.ventaboletos.service.EmpresaService;
import com.rjconsultores.ventaboletos.service.GrupoContratoService;
import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEmpresa;
import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEstandar;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Controller("relatorioSaldosContratosController")
@Scope("prototype")
public class RelatorioSaldosContratosController   extends MyGenericForwardComposer {

	private static final long serialVersionUID = 907782676753469699L;
	@Autowired
	private DataSource dataSourceRead;
	@Autowired
	private EmpresaService empresaService;
	@Autowired
	private GrupoContratoService grupoContratoService;

	private Datebox datInicial;
	private Datebox datFinal;
	private MyTextbox txtNumContrato;
	private MyComboboxEmpresa cmbEmpresa;
	private MyComboboxEstandar cmbGrupoContrato;
	private Radiogroup rdgStatus;
	
	private List<Empresa> lsEmpresa;
	private List<GrupoContrato> lsGrupoContrato;
	
	@Override
	public void doAfterCompose(Component comp) throws Exception {
		lsEmpresa = empresaService.obtenerTodos();
		lsGrupoContrato = grupoContratoService.obtenerTodos();
		super.doAfterCompose(comp);
		
	}

	public void onClick$btnExecutarRelatorio(Event ev) throws Exception {

		Map<String, Object> parametros = new HashMap<String, Object>();
		parametros.put("NUMCONTRATO", txtNumContrato.getValue());
		
		Comboitem cbiEmpresa = cmbEmpresa.getSelectedItem();
		if (cbiEmpresa != null) {
			Empresa empresa = (Empresa) cbiEmpresa.getValue();
			parametros.put("EMPRESA_ID", empresa.getEmpresaId());
		}
		
		Comboitem cbiGrupoContrato = cmbGrupoContrato.getSelectedItem();
		if (cbiGrupoContrato != null) {
			GrupoContrato grupo = (GrupoContrato) cbiGrupoContrato.getValue();
			parametros.put("GRUPOCONTRATO_ID", grupo.getGrupoContratoId());
		}
		
		if (datInicial.getValue() != null) {
			parametros.put("DATA_DE", new java.sql.Date(((java.util.Date) datInicial.getValue()).getTime()));
		}
		
		if (datFinal.getValue() != null) {
			parametros.put("DATA_ATE", new java.sql.Date(((java.util.Date) datFinal.getValue()).getTime()));
		}
		parametros.put("STATUS", Integer.valueOf(rdgStatus.getSelectedItem().getValue()));

		Relatorio relatorio = new RelatorioSaldosDeContratos(parametros, dataSourceRead.getConnection());

		Map<String, Object> args = new HashMap<String, Object>();
		args.put("relatorio", relatorio);

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

}
