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

import java.util.Calendar;
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.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.ComboitemRenderer;
import org.zkoss.zul.Datebox;

import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioDiferencasTransferencias;
import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioReceitaServico;
import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;

@Controller("relatorioDiferencasTransferenciasController")
@Scope("prototype")
public class RelatorioDiferencasTransferenciasController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 1L;

	private Datebox datInicial;
	private Datebox datFinal;

	@Autowired
	private DataSource dataSourceRead;

	public Datebox getDatInicial() {
		return datInicial;
	}

	public void setDatInicial(Datebox datInicial) {
		this.datInicial = datInicial;
	}

	public Datebox getDatFinal() {
		return datFinal;
	}

	public void setDatFinal(Datebox datFinal) {
		this.datFinal = datFinal;
	}

	@Override
	public void doAfterCompose(Component comp) throws Exception {

		super.doAfterCompose(comp);
	}

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

	/**
	 * @throws Exception
	 * 
	 */
	@SuppressWarnings({ "rawtypes", "unchecked" })
	private void executarRelatorio() throws Exception {

		if (datInicial != null && datFinal != null && datFinal.getValue().compareTo(datInicial.getValue()) < 0) {
			try {
				Messagebox.show(Labels.getLabel("MSG.ningunRegistro"),
						Labels.getLabel("relatorioDiferencasTransferenciasController.window.title"),
						Messagebox.OK, Messagebox.INFORMATION);
			} catch (InterruptedException ex) {
				ex.printStackTrace();
			}
		} else
		{
			Relatorio relatorio;

			Map<String, Object> parametros = new HashMap<String, Object>();

			StringBuilder filtro = new StringBuilder();

			filtro.append("Início período: ");
			Calendar cal = Calendar.getInstance();
			cal.setTime(datInicial.getValue());
			filtro.append(cal.get(Calendar.DATE) + "/");
			filtro.append((cal.get(Calendar.MONTH) + 1) + "/");
			filtro.append(cal.get(Calendar.YEAR) + "; ");

			filtro.append("Fim período: ");
			cal.setTime(datFinal.getValue());
			filtro.append(cal.get(Calendar.DATE) + "/");
			filtro.append((cal.get(Calendar.MONTH) + 1) + "/");
			filtro.append(cal.get(Calendar.YEAR) + "; ");

			parametros.put("DATA_INICIAL", (java.util.Date) datInicial.getValue());
			parametros.put("DATA_FINAL", (java.util.Date) datFinal.getValue());

			parametros.put("FILTROS", filtro.toString());

			parametros.put("NOME_RELATORIO", Labels.getLabel("relatorioDiferencasTransferenciasController.window.title"));
			parametros.put("USUARIO", UsuarioLogado.getUsuarioLogado().getUsuarioId().toString());

			relatorio = new RelatorioDiferencasTransferencias(parametros, dataSourceRead.getConnection());

			Map args = new HashMap();
			args.put("relatorio", relatorio);

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