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

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
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.zk.ui.event.EventListener;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Textbox;

import com.rjconsultores.ventaboletos.entidad.ConexionRutaConf;
import com.rjconsultores.ventaboletos.service.ConexionRutaConfService;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderBusquedaConexionRuta;

/**
 * 
 * @author wallace
 */
@Controller("busquedaConexionPorRutaController")
@Scope("prototype")
public class BusquedaConexionPorRutaController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 1L;
	@Autowired
	private ConexionRutaConfService conexionRutaConfService;
	private MyListbox conexionesRutaConfList;
	private Textbox txtDescricao;
	private Intbox idConexionRutaConf;

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

		conexionesRutaConfList.setData(conexionRutaConfService.obtenerTodosActivo());

		conexionesRutaConfList.setItemRenderer(new RenderBusquedaConexionRuta());
		conexionesRutaConfList.addEventListener("onDoubleClick", new EventListener() {

			@Override
			public void onEvent(Event event) throws Exception {
				ConexionRutaConf conexionRutaConf = (ConexionRutaConf) conexionesRutaConfList.getSelected();
				verConexionRutaConf(conexionRutaConf);
			}
		});
	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	private void verConexionRutaConf(ConexionRutaConf conexionRutaConf) {
		Map args = new HashMap();

		args.put("conexionRutaConf", conexionRutaConf);
		args.put("conexionRutaConfList", conexionesRutaConfList);

		openWindow("/gui/esquema_operacional/gerarConexionPorRuta.zul",
				Labels.getLabel("editarConexionPorRutaController.window.title"), args, MODAL);
	}

	public void onClick$btnPesquisa(Event ev) throws InterruptedException {
		refreshLista();
	}
	public void onClick$btnRefresh(Event ev) throws Exception {
		refreshLista();
	}
	
	private void refreshLista() {

		Integer id = idConexionRutaConf.getValue();
		String descricao = txtDescricao.getValue();

		List<ConexionRutaConf> lsConexionRutaConf = new ArrayList<ConexionRutaConf>();
		if (id != null) {
			ConexionRutaConf conexionRutaConf = conexionRutaConfService.getByIdActivo(id);
			if(conexionRutaConf !=null) {
				lsConexionRutaConf.add(conexionRutaConf);
				conexionesRutaConfList.setData(lsConexionRutaConf);
			}
		} else if (StringUtils.isNotBlank(descricao)) {
			lsConexionRutaConf = conexionRutaConfService.buscarPorDescricao(descricao);
		}else {
			lsConexionRutaConf = conexionRutaConfService.obtenerTodosActivo();
		}
		conexionesRutaConfList.setData(lsConexionRutaConf);

	}

	public void onClick$btnNovo(Event ev) {
		verConexionRutaConf(null);
	}

}
