package com.rjconsultores.ventaboletos.web.utilerias.render;

import java.util.HashMap;
import java.util.List;

import org.zkoss.zk.ui.api.HtmlBasedComponent;
import org.zkoss.zkplus.spring.SpringUtil;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.ListitemRenderer;
import com.rjconsultores.ventaboletos.entidad.Conexion;
import com.rjconsultores.ventaboletos.entidad.ConexionConf;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.service.ParadaService;
import com.rjconsultores.ventaboletos.service.RutaService;

public class RenderEditarConexion implements ListitemRenderer {
	private ParadaService paradaService = (ParadaService) SpringUtil.getBean("paradaService");
	private RutaService rutaService = (RutaService) SpringUtil.getBean("rutaService");
	private static int grupo = 0;
	private boolean changeColor = true;
	private Conexion conexion;
	private Listitem listItem;
	private List<Intbox> lsTxtServico;
	private HashMap<Integer, ConexionConf> conexionConfHash;

	private String style1 = "Font-weight:bold;background-color: #DCDCDC";
	private String style2 = "Font-weight:bold;background-color: #C0C0C0";
	private String styleDesativada1 = "Font-weight:bold;background-color: #FF6347";
	private String styleDesativada2 = "Font-weight:bold;background-color: #800000";

	public RenderEditarConexion(List<Intbox> lsTxtServico, HashMap<Integer, ConexionConf> conexionConfHash) {
		this.lsTxtServico = lsTxtServico;
		this.conexionConfHash = conexionConfHash;
	}

	private void setStyle(HtmlBasedComponent lc, ConexionConf conexionConf) {
		lc.setStyle(changeColor ? style1 : style2);
		if ((conexionConf != null) && (conexionConf.getIndisponible() != null) && (conexionConf.getIndisponible())) {
			lc.setStyle(changeColor ? styleDesativada1 : styleDesativada2);
		}
	}

	public void render(Listitem lstm, Object o) throws Exception {
		conexion = (Conexion) o;
		listItem = lstm;
		
		
		if (grupo != conexion.getNumgrupo()) {
			grupo = conexion.getNumgrupo();
			changeColor = !changeColor;
		}
		ConexionConf conexionConf = conexionConfHash.get(conexion.getNumgrupo());
		setStyle(lstm, conexionConf);
		
		Parada origem = paradaService.obtenerID(conexion.getOrigenId());
		Listcell lc = new Listcell(origem.getDescparada());
		lc.setParent(listItem);

		Parada destino = paradaService.obtenerID(conexion.getDestinoId());
		lc = new Listcell(destino.getDescparada());
		lc.setParent(listItem);

		lc = new Listcell(conexion.getNumgrupo().toString());
		lc.setParent(listItem);

		lc = new Listcell(conexion.getNumsecuencia().toString());
		lc.setParent(listItem);

		setupCelServico(conexionConf);
		Ruta ruta = null;
		if (conexion.getRutaId() != null) {
			ruta = rutaService.obtenerID(conexion.getRutaId());
			lc = new Listcell(ruta.getNumRuta() + " - " + ruta.getDescruta() + " - " + ruta.getDescSentido());
			lc.setParent(listItem);
		}
	

		listItem.setValue(conexion);
	}

	private void setupCelServico(ConexionConf conexionConf) {
		Intbox intBox = lsTxtServico.get(listItem.getIndex());

		if (conexion.getCorridaId() != null) {
			intBox.setValue(conexion.getCorridaId().intValue());
		}else if(conexion.getRutaId() != null){
			intBox.setDisabled(true);
		}

		Listcell lc = new Listcell();
		lc.appendChild(intBox);

		//setStyle(lc, conexionConf);
		//setStyle(intBox, conexionConf);

		lc.setParent(listItem);

	}
}
