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

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

import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioBaixasVendasInternet;
import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioBaixasVendasInternetSintetico;
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxPuntoVenta;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;

@Controller("relatorioBaixasVendasInternetController")
@Scope("prototype")
public class RelatorioBaixasVendasInternetController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 722641825753640276L;
	
	private Datebox fecInicio;
	private Datebox fecFinal;
	private MyComboboxPuntoVenta cmbPuntoVenta;
	
	@Autowired
	private DataSource dataSourceRead;
	
	public void onClick$btnExecutarRelatorio(Event ev) throws Exception {
		Map<String, Object> args = new HashMap<String, Object>();
		String title = null;
		
		PuntoVenta puntoVenta = (PuntoVenta) cmbPuntoVenta.getSelectedItem().getValue();
		
		Date datInicial = null;
		if (this.fecInicio.getValue() != null) {
			datInicial = DateUtil.inicioFecha(this.fecInicio.getValue());
		}

		Date datFinal = null;
		if (this.fecFinal.getValue() != null) {
			datFinal = DateUtil.fimFecha(this.fecFinal.getValue());
		}
		
		if (puntoVenta != null && puntoVenta.getPuntoventaId() != null && puntoVenta.getPuntoventaId() != -1) {
			RelatorioBaixasVendasInternet relatorio = new RelatorioBaixasVendasInternet(dataSourceRead.getConnection(), datInicial, datFinal, puntoVenta);
			args.put("relatorio", relatorio);
			title = Labels.getLabel("indexController.mniRelatorioBaixasVendasInternet.label");

		} else {
			// criar o relatorio sintetico com a outra consulta
			RelatorioBaixasVendasInternetSintetico relatorio = new RelatorioBaixasVendasInternetSintetico(dataSourceRead.getConnection(), datInicial, datFinal);
			args.put("relatorio", relatorio);
			title = Labels.getLabel("indexController.mniRelatorioBaixasVendasInternetSintetico.label");
		}
		
		openWindow("/component/reportView.zul", title, args, MODAL);
	}
}