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

import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.Marca;
import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.service.EmpresaService;
import com.rjconsultores.ventaboletos.service.InformePasajeroServicioService;
import com.rjconsultores.ventaboletos.service.MarcaService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import java.io.InputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.zkoss.util.media.Media;
import org.zkoss.util.resource.Labels;
import org.zkoss.zhtml.Filedownload;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Datebox;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Messagebox;

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

	@Autowired
	private EmpresaService empresaService;
	@Autowired
	private MarcaService marcaService;
	@Autowired
	private InformePasajeroServicioService informePasajeroServicioService;
	private List<Empresa> lsEmpresas;
	private List<Marca> lsMarcas;
	private Intbox intServicio;
	private Datebox fecInicio;
	private Datebox fecFinal;
	private Combobox cmbMarca;
	private Combobox cmbEmpresa;

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

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

	public List<Marca> getLsMarcas() {
		return lsMarcas;
	}

	public void setLsMarcas(List<Marca> lsMarcas) {
		this.lsMarcas = lsMarcas;
	}

	public Intbox getIntServicio() {
		return intServicio;
	}

	public void setIntServicio(Intbox intServicio) {
		this.intServicio = intServicio;
	}

	@Override
	public void doAfterCompose(Component comp) throws Exception {
		lsEmpresas = empresaService.buscarTodosExceto(UsuarioLogado.getUsuarioLogado().getEmpresa(),-1);
		lsMarcas = marcaService.buscarTodosExceto(UsuarioLogado.getUsuarioLogado(),-1);

		super.doAfterCompose(comp);
	}

	public void onClick$btnInforme(Event e) throws InterruptedException {
		Empresa empresa = null;
		Comboitem cbiEmpresa = cmbEmpresa.getSelectedItem();
		if (cbiEmpresa != null) {
			empresa = (Empresa) cbiEmpresa.getValue();
		}

		Marca marca = null;
		Comboitem cbiMarca = cmbMarca.getSelectedItem();
		if (cbiMarca != null) {
			marca = (Marca) cbiMarca.getValue();
		}

		Integer numServicio = intServicio.getValue();
		Date dataInicio = fecInicio.getValue();
		Date dataFinal = fecFinal.getValue();

		Map argsInforme = new HashMap();
		argsInforme.put("empresa", empresa);
		argsInforme.put("marca", marca);
		argsInforme.put("numServicio", numServicio);
		argsInforme.put("dataInicio", dataInicio);
		argsInforme.put("dataFinal", dataFinal);

		InputStream is = desktop.getWebApp().getResourceAsStream(
				"/gui/informes/pasajero_servicio/informePasajeroServico.jasper");
		try {
			Media m = informePasajeroServicioService.gerarInforme(is, argsInforme);

			Filedownload.save(m);
		} catch (BusinessException ex) {
			Messagebox.show(ex.getLocalizedMessage(), Labels.getLabel("indexController.mnInformes.label"), Messagebox.OK, Messagebox.ERROR);
		}
	}
}
