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

import com.rjconsultores.ventaboletos.entidad.AlertaCtrl;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.Corrida;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.service.AlertaCtrlService;
import com.rjconsultores.ventaboletos.service.ClaseServicioService;
import com.rjconsultores.ventaboletos.service.CorridaService;
import com.rjconsultores.ventaboletos.service.RutaService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxParada;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextboxDecimal;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.apache.log4j.Logger;
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.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.util.Clients;
import org.zkoss.zkplus.databind.BindingListModelList;
import org.zkoss.zul.Button;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Datebox;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.ListitemRenderer;
import org.zkoss.zul.Radio;
import org.zkoss.zul.Tab;

/**
 * 
 * @author Administrador
 */
@Controller("editarAlertaCtrlController")
@Scope("prototype")
public class EditarAlertaCtrlController extends MyGenericForwardComposer
		implements ListitemRenderer {

	private static final long serialVersionUID = 1L;
	@Autowired
	private AlertaCtrlService arlertaCtrlService;
	@Autowired
	private RutaService rutaService;
	@Autowired
	private CorridaService corridaService;
	@Autowired
	private ClaseServicioService claseServicioService;
	private List<ClaseServicio> lsClaseServicio;
	private List<Ruta> lsRuta;
	private AlertaCtrl alertaCtrl;
	private MyListbox alertaCtrlList;
	private Button btnApagar;
	private MyComboboxParada cmbOrigem;
	private MyComboboxParada cmbDestino;
	private MyComboboxParada cmbOrigemCorrida;
	private MyComboboxParada cmbDestinoCorrida;
	private MyComboboxParada cmbOrigemBusqueda;
	private MyComboboxParada cmbDestinoBusqueda;
	private Combobox cmbTipoServicioBusqueda;
	private Combobox cmbRuta;
	private Combobox cmbClaseServicio;
	private Combobox cmbTipoServicio;
	private Datebox horaCorrida;
	private Datebox horaCorridaBusqueda;
	private Intbox txtIdCorrida;
	private Intbox txtTiempo;
	private Intbox txtTiempoCorrida;
	private MyTextboxDecimal txtPorc;
	private MyTextboxDecimal txtPorcCorrida;
	private Radio rdAlta;
	private Radio rdAltaCorrida;
	private Radio rdBaja;
	private Radio rdBajaCorrida;
	private Tab tabGenerico;
	private Tab tabCorrida;
	private Tab tabOpcion;
	private Boolean isGenerico;
	private Checkbox rdLun;
	private Checkbox rdMar;
	private Checkbox rdMie;
	private Checkbox rdJue;
	private Checkbox rdVie;
	private Checkbox rdSab;
	private Checkbox rdDom;
	private static Logger log = Logger.getLogger(EditarAlertaCtrlController.class);

	public AlertaCtrl getAlertaCtrl() {
		return alertaCtrl;
	}

	public void setAlertaCtrl(AlertaCtrl alertaCtrl) {
		this.alertaCtrl = alertaCtrl;
	}

	public List<ClaseServicio> getLsClaseServicio() {
		return lsClaseServicio;
	}

	public void setLsClaseServicio(List<ClaseServicio> lsClaseServicio) {
		this.lsClaseServicio = lsClaseServicio;
	}

	public List<Ruta> getLsRuta() {
		return lsRuta;
	}

	public void setLsRuta(List<Ruta> lsRuta) {
		this.lsRuta = lsRuta;
	}

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

		alertaCtrl = (AlertaCtrl) Executions.getCurrent().getArg().get("alertaCtrl");
		alertaCtrlList = (MyListbox) Executions.getCurrent().getArg().get("alertaCtrlList");

		lsClaseServicio = claseServicioService.obtenerTodos();
		BindingListModelList modelClaseServicio = new BindingListModelList(lsClaseServicio, true);
		cmbClaseServicio.setModel(modelClaseServicio);

		cmbOrigemCorrida.setDisabled(Boolean.TRUE);
		cmbDestinoCorrida.setDisabled(Boolean.TRUE);
		cmbTipoServicio.setDisabled(Boolean.TRUE);

		horaCorrida.setDisabled(Boolean.TRUE);

		if (alertaCtrl.getAlertactrlId() == null) {
			btnApagar.setVisible(Boolean.FALSE);
			tabGenerico.setVisible(Boolean.FALSE);
			tabCorrida.setVisible(Boolean.FALSE);
		} else {
			if (alertaCtrl.getCorrida() != null) {
				List<Corrida> lsCorridas = new ArrayList<Corrida>();
				lsCorridas.add(alertaCtrl.getCorrida());
				if (alertaCtrl.getPorcalta() != null) {
					rdAltaCorrida.setSelected(true);
					txtPorcCorrida.setValue(alertaCtrl.getPorcalta().toString());
					txtTiempoCorrida.setValue(alertaCtrl.getTiempoalta());
				} else {
					rdBajaCorrida.setSelected(true);
					txtPorcCorrida.setValue(alertaCtrl.getPorcbaja().toString());
					txtTiempoCorrida.setValue(alertaCtrl.getTiempobaja());
				}

				horaCorrida.setValue(alertaCtrl.getCorrida().getFechorsalida());

				if (alertaCtrl.getIndlunes() == Boolean.TRUE) {
					rdLun.setChecked(true);
				}
				if (alertaCtrl.getIndmartes() == Boolean.TRUE) {
					rdMar.setChecked(true);
				}
				if (alertaCtrl.getIndmiercoles() == Boolean.TRUE) {
					rdMie.setChecked(true);
				}
				if (alertaCtrl.getIndjueves() == Boolean.TRUE) {
					rdJue.setChecked(true);
				}
				if (alertaCtrl.getIndviernes() == Boolean.TRUE) {
					rdVie.setChecked(true);
				}
				if (alertaCtrl.getIndsabado() == Boolean.TRUE) {
					rdSab.setChecked(true);
				}
				if (alertaCtrl.getInddomingo() == Boolean.TRUE) {
					rdDom.setChecked(true);
				}

				corrida();
			} else {
				generico();

				if (alertaCtrl.getOrigem() != null) {
					cmbOrigem.setText(alertaCtrl.getOrigem().getDescparada());
				}

				if (alertaCtrl.getDestino() != null) {
					cmbDestino.setText(alertaCtrl.getDestino().getDescparada());
				}

				if (alertaCtrl.getClaseServicio() != null) {
					cmbClaseServicio.setText(alertaCtrl.getClaseServicio().getDescclase());
				}

				if (alertaCtrl.getRuta() != null) {
					cmbRuta.setText(alertaCtrl.getRuta().getDescruta());
				}
				if (alertaCtrl.getPorcalta() != null) {
					rdAlta.setSelected(true);
					txtPorc.setValue(alertaCtrl.getPorcalta().toString());
					txtTiempo.setValue(alertaCtrl.getTiempoalta());
				} else {
					rdBaja.setSelected(true);
					txtPorc.setValue(alertaCtrl.getPorcbaja().toString());
					txtTiempo.setValue(alertaCtrl.getTiempobaja());
				}
			}
		}
	}

	public void corrida() {
		tabGenerico.setVisible(Boolean.FALSE);
		tabOpcion.setVisible(Boolean.FALSE);
		tabCorrida.setSelected(Boolean.TRUE);
		isGenerico = false;
	}

	public void generico() {
		tabCorrida.setVisible(Boolean.FALSE);
		tabOpcion.setVisible(Boolean.FALSE);
		tabGenerico.setSelected(Boolean.TRUE);
		isGenerico = true;
	}

	public void onClick$rdGenerica(Event ev) {
		generico();
	}

	public void onClick$rdCorrida(Event ev) {
		corrida();
	}

	public void onClick$btnSalvar(Event ev) throws InterruptedException {
		if (isGenerico) {
			cmbRuta.getValue();
			cmbClaseServicio.getValue();
			cmbOrigem.getValue();
			cmbDestino.getValue();
			txtPorc.getValue();
			txtTiempo.getValue();
		} else {
			txtPorcCorrida.getValue();
			txtTiempoCorrida.getValue();
			if (alertaCtrl.getCorrida() == null) {
				Messagebox.show(Labels.getLabel("editarAlertaCtrlController.MSG.seleccionar.corrida"),
						Labels.getLabel("editarAlertaCtrlController.window.title"),
						Messagebox.OK, Messagebox.EXCLAMATION);
			}
			if (!rdLun.isChecked() && !rdMar.isChecked() && !rdMie.isChecked() && !rdJue.isChecked() && !rdVie.isChecked() && !rdSab.isChecked() && !rdDom.isChecked()) {
				Clients.alert(Labels.getLabel("editarAlertaCtrlController.MSG.obligatorioDia"),
						Labels.getLabel("editarAlertaCtrlController.window.title"), Messagebox.EXCLAMATION);

				return;
			}
		}
		try {
			if (isGenerico) {
				if (!rdAlta.isChecked() && !rdBaja.isChecked()) {
					Messagebox.show(Labels.getLabel("editarAlertaCtrlController.MSG.necessitaTipo"),
							Labels.getLabel("editarAlertaCtrlController.window.title"),
							Messagebox.OK, Messagebox.EXCLAMATION);
					return;
				} else if (rdAlta.isChecked()) {
					alertaCtrl.setPorcalta(txtPorc.getValueDecimal());
					alertaCtrl.setPorcbaja(null);

					alertaCtrl.setTiempoalta(txtTiempo.getValue());
					alertaCtrl.setTiempobaja(null);
				} else if (rdBaja.isChecked()) {
					alertaCtrl.setPorcalta(null);
					alertaCtrl.setPorcbaja(txtPorc.getValueDecimal());

					alertaCtrl.setTiempoalta(null);
					alertaCtrl.setTiempobaja(txtTiempo.getValue());
				}
				Parada origem = (Parada) (cmbOrigem.getSelectedItem() == null ? null : cmbOrigem.getSelectedItem().getValue());
				if (origem != null) {
					alertaCtrl.setOrigem(origem);
				} else {
					Messagebox.show(Labels.getLabel("MSG.necesita.origen"),
							Labels.getLabel("editarAlertaCtrlController.window.title"),
							Messagebox.OK, Messagebox.EXCLAMATION);

					return;
				}

				Parada destino = (Parada) (cmbDestino.getSelectedItem() == null ? null : cmbDestino.getSelectedItem().getValue());
				if (destino != null) {
					alertaCtrl.setDestino(destino);
				} else {
					Messagebox.show(Labels.getLabel("MSG.necesita.destino"),
							Labels.getLabel("editarAlertaCtrlController.window.title"),
							Messagebox.OK, Messagebox.EXCLAMATION);

					return;
				}

				Ruta ruta = (Ruta) (cmbRuta.getSelectedItem() == null ? null : cmbRuta.getSelectedItem().getValue());
				if (ruta != null) {
					alertaCtrl.setRuta(ruta);
				}

				ClaseServicio claseServicio = (ClaseServicio) (cmbClaseServicio.getSelectedItem() == null ? null : cmbClaseServicio.getSelectedItem().getValue());
				if (claseServicio != null) {
					alertaCtrl.setClaseServicio(claseServicio);
				}
			} else {
				if (!rdAltaCorrida.isChecked() && !rdBajaCorrida.isChecked()) {
					Messagebox.show(Labels.getLabel("editarAlertaCtrlController.MSG.necessitaTipo"),
							Labels.getLabel("editarAlertaCtrlController.window.title"),
							Messagebox.OK, Messagebox.EXCLAMATION);

					return;
				} else if (rdAltaCorrida.isChecked()) {
					alertaCtrl.setPorcalta(txtPorcCorrida.getValueDecimal());
					alertaCtrl.setPorcbaja(null);

					alertaCtrl.setTiempoalta(txtTiempoCorrida.getValue());
					alertaCtrl.setTiempobaja(null);
				} else if (rdBajaCorrida.isChecked()) {
					alertaCtrl.setPorcalta(null);
					alertaCtrl.setPorcbaja(txtPorcCorrida.getValueDecimal());

					alertaCtrl.setTiempoalta(null);
					alertaCtrl.setTiempobaja(txtTiempoCorrida.getValue());
				}

				alertaCtrl.setRuta(alertaCtrl.getCorrida().getRuta());
				alertaCtrl.setClaseServicio(alertaCtrl.getCorrida().getClaseServicio());
				alertaCtrl.setOrigem(alertaCtrl.getCorrida().getOrigem());
				alertaCtrl.setDestino(alertaCtrl.getCorrida().getDestino());
			}

			alertaCtrl.setActivo(Boolean.TRUE);
			alertaCtrl.setFecmodif(Calendar.getInstance().getTime());
			alertaCtrl.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());

			List<AlertaCtrl> lsAlertaCtrl = new ArrayList<AlertaCtrl>();
			if (isGenerico) {
				Integer tiempoAlta = alertaCtrl.getTiempoalta();
				Integer tiempoBaja = alertaCtrl.getTiempobaja();
				BigDecimal percAlta = alertaCtrl.getPorcalta();
				BigDecimal percBaja = alertaCtrl.getPorcbaja();

				lsAlertaCtrl = arlertaCtrlService.buscar(alertaCtrl.getOrigem(), alertaCtrl.getDestino(),
						alertaCtrl.getRuta(), alertaCtrl.getClaseServicio(), tiempoAlta,
						tiempoBaja, percAlta, percBaja);

				boolean podeSalvar = false;
				if (lsAlertaCtrl.isEmpty()) {
					podeSalvar = true;
				} else {
					if (alertaCtrl.getAlertactrlId() != null) {
						for (AlertaCtrl c : lsAlertaCtrl) {
							if (c.getAlertactrlId().equals(alertaCtrl.getAlertactrlId())) {
								podeSalvar = true;
							}
						}
					}
				}

				if (!podeSalvar) {
					Messagebox.show(Labels.getLabel("MSG.Registro.Existe"),
							Labels.getLabel("editarAlertaCtrlController.window.title"),
							Messagebox.OK, Messagebox.EXCLAMATION);

					return;
				}
			} else {
				alertaCtrl.setIndlunes(rdLun.isChecked() ? Boolean.TRUE : Boolean.FALSE);
				alertaCtrl.setIndmartes(rdMar.isChecked() ? Boolean.TRUE : Boolean.FALSE);
				alertaCtrl.setIndmiercoles(rdMie.isChecked() ? Boolean.TRUE : Boolean.FALSE);
				alertaCtrl.setIndjueves(rdJue.isChecked() ? Boolean.TRUE : Boolean.FALSE);
				alertaCtrl.setIndviernes(rdVie.isChecked() ? Boolean.TRUE : Boolean.FALSE);
				alertaCtrl.setIndsabado(rdSab.isChecked() ? Boolean.TRUE : Boolean.FALSE);
				alertaCtrl.setInddomingo(rdDom.isChecked() ? Boolean.TRUE : Boolean.FALSE);

				if (!noTraslapa()) {
					Messagebox.show(Labels.getLabel("editarAlertaCtrlController.MSG.traslapa"),
							Labels.getLabel("editarAlertaCtrlController.window.title"),
							Messagebox.OK, Messagebox.EXCLAMATION);

					return;
				}
			}
			alertaCtrl = arlertaCtrlService.suscribirActualizar(alertaCtrl);
			if (alertaCtrl.getAlertactrlId() == null) {
				alertaCtrlList.addItem(alertaCtrl);
			} else {
				alertaCtrlList.updateItem(alertaCtrl);
			}

			Messagebox.show(Labels.getLabel("editarAlertaCtrlController.MSG.suscribirOK"),
					Labels.getLabel("editarAlertaCtrlController.window.title"),
					Messagebox.OK, Messagebox.INFORMATION);

			closeWindow();

		} catch (BusinessException ex) {
			Messagebox.show(ex.getLocalizedMessage(),
					Labels.getLabel("editarAlertaCtrlController.window.title"),
					Messagebox.OK, Messagebox.ERROR);
		} catch (Exception ex) {
			log.error("editarAlertaCtrlController: " + ex, ex);
			Messagebox.show(Labels.getLabel("MSG.Error"),
					Labels.getLabel("editarAlertaCtrlController.window.title"),
					Messagebox.OK, Messagebox.ERROR);
		}
	}

	public void onClick$btnApagar(Event ev) {
		try {
			int resp = Messagebox.show(Labels.getLabel("editarAlertaCtrlController.MSG.borrarPergunta"),
					Labels.getLabel("editarAlertaCtrlController.window.title"),
					Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);

			if (resp == Messagebox.YES) {

				arlertaCtrlService.borrar(alertaCtrl);

				Messagebox.show(Labels.getLabel("editarAlertaCtrlController.MSG.borrarOK"),
						Labels.getLabel("editarAlertaCtrlController.window.title"),
						Messagebox.OK, Messagebox.INFORMATION);

				alertaCtrlList.removeItem(alertaCtrl);

				closeWindow();
			}
		} catch (Exception ex) {
			log.error(ex);
		}
	}

	public void onChange$cmbClaseServicio(Event ev) {
		Comboitem cbiClaseServicio = cmbClaseServicio.getSelectedItem();

		if (cbiClaseServicio != null) {
			ClaseServicio claseServicio = (ClaseServicio) cbiClaseServicio.getValue();
			lsRuta = rutaService.buscarPorClaseServicio(claseServicio);

			cmbRuta.setConstraint("");

			cmbRuta.setSelectedItem(null);
			cmbRuta.setText(null);

			BindingListModelList modelRuta = new BindingListModelList(lsRuta, true);
			cmbRuta.setModel(modelRuta);

			cmbRuta.setConstraint("no empty");
		}
	}

	public void onClick$btnProcurarCorrida(Event ev) throws InterruptedException {

		Integer idCorrida = txtIdCorrida.getValue();
		if (idCorrida != null) {
			List<Corrida> lsCorrida = corridaService.buscarPorId(idCorrida);

			if (lsCorrida.isEmpty()) {
				Messagebox.show(Labels.getLabel("MSG.ningunRegistro"),
						Labels.getLabel("editarAlertaCtrlController.window.title"),
						Messagebox.OK, Messagebox.INFORMATION);
			} else {
				alertaCtrl.setCorrida(lsCorrida.get(0));
				horaCorrida.setValue(alertaCtrl.getCorrida().getFechorsalida());
				cmbOrigemCorrida.setText(alertaCtrl.getCorrida().getOrigem().getDescparada());
				cmbDestinoCorrida.setText(alertaCtrl.getCorrida().getDestino().getDescparada());
				cmbTipoServicio.setText(alertaCtrl.getCorrida().getClaseServicio().getDescclase());
			}
		} else {

			cmbOrigemBusqueda.getValue();
			cmbDestinoBusqueda.getValue();
			horaCorridaBusqueda.getValue();
			cmbTipoServicioBusqueda.getValue();

			Parada ori = (Parada) cmbOrigemBusqueda.getSelectedItem().getValue();
			Parada des = (Parada) cmbDestinoBusqueda.getSelectedItem().getValue();
			Date hora = horaCorridaBusqueda.getValue();
			ClaseServicio cs = (ClaseServicio) cmbTipoServicioBusqueda.getSelectedItem().getValue();

			List<Corrida> lsCorrida = corridaService.buscarFiltro(ori, des, hora, cs);

			if (lsCorrida.isEmpty()) {
				Messagebox.show(Labels.getLabel("MSG.ningunRegistro"),
						Labels.getLabel("editarAlertaCtrlController.window.title"),
						Messagebox.OK, Messagebox.INFORMATION);
			} else {
				alertaCtrl.setCorrida(lsCorrida.get(0));
				horaCorrida.setValue(alertaCtrl.getCorrida().getFechorsalida());
				cmbOrigemCorrida.setText(alertaCtrl.getCorrida().getOrigem().getDescparada());
				cmbDestinoCorrida.setText(alertaCtrl.getCorrida().getDestino().getDescparada());
				cmbTipoServicio.setText(alertaCtrl.getCorrida().getClaseServicio().getDescclase());
			}
		}
	}

	public boolean noTraslapa() {
		List<AlertaCtrl> lsVT1 = arlertaCtrlService.buscarCorrida(alertaCtrl.getCorrida());

		// Nao Traslapen
		Boolean podeSalvar = false;
		Boolean[] podeTodos = new Boolean[lsVT1.isEmpty() ? 1 : lsVT1.size()];
		boolean podeMesmo = true;

		// Se a lista for nula / Salva
		if (lsVT1.isEmpty()) {
			podeMesmo = true;
			podeTodos[0] = true;
			// Se a lista não for nula e for algo novo... não pode salvar
		} else {
			int i = 0;
			for (AlertaCtrl p : lsVT1) {
				if (p.getAlertactrlId().equals(alertaCtrl.getAlertactrlId())) {
					podeTodos[i] = true;
					continue;
				}
				podeSalvar = true;
				if (alertaCtrl.getIndlunes()) {
					if (p.getIndlunes() == alertaCtrl.getIndlunes()) {
						podeSalvar = false;
					}
				}
				if (alertaCtrl.getIndmartes()) {
					if (p.getIndmartes() == alertaCtrl.getIndmartes()) {
						podeSalvar = false;
					}
				}
				if (alertaCtrl.getIndmiercoles()) {
					if (p.getIndmiercoles() == alertaCtrl.getIndmiercoles()) {
						podeSalvar = false;
					}
				}
				if (alertaCtrl.getIndjueves()) {
					if (p.getIndjueves() == alertaCtrl.getIndjueves()) {
						podeSalvar = false;
					}
				}
				if (alertaCtrl.getIndviernes()) {
					if (p.getIndviernes() == alertaCtrl.getIndviernes()) {
						podeSalvar = false;
					}
				}
				if (alertaCtrl.getIndsabado()) {
					if (p.getIndsabado() == alertaCtrl.getIndsabado()) {
						podeSalvar = false;
					}
				}
				if (alertaCtrl.getInddomingo()) {
					if (p.getInddomingo() == alertaCtrl.getInddomingo()) {
						podeSalvar = false;
					}
				}
				podeTodos[i] = podeSalvar;
				i++;
			}
		}

		for (int i = 0; i < podeTodos.length; i++) {
			if (podeTodos[i] != null) {
				if (!podeTodos[i]) {
					podeMesmo = false;
				}
			}
		}
		return podeMesmo;
	}

	public void render(Listitem lstm, Object o) throws Exception {
		Corrida corrida = (Corrida) o;

		Listcell lc = new Listcell();

		lc = new Listcell(corrida.getId().getCorridaId().toString());
		lc.setParent(lstm);

		SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
		lc = new Listcell(format.format(corrida.getId().getFeccorrida()));
		lc.setParent(lstm);

		if (corrida.getOrigem() != null) {
			lc = new Listcell(corrida.getOrigem().getDescparada());
		} else {
			lc = new Listcell("");
		}
		lc.setParent(lstm);

		if (corrida.getDestino() != null) {
			lc = new Listcell(corrida.getDestino().getDescparada());
		} else {
			lc = new Listcell("");
		}
		lc.setParent(lstm);

		if (corrida.getRuta() != null) {
			lc = new Listcell(corrida.getRuta().getDescruta());
		} else {
			lc = new Listcell("");
		}
		lc.setParent(lstm);

		if (corrida.getClaseServicio() != null) {
			lc = new Listcell(corrida.getClaseServicio().getDescclase());
		} else {
			lc = new Listcell("");
		}
		lc.setParent(lstm);

		if (alertaCtrl.getCorrida() != null) {
			if (corrida != null) {
				if ((alertaCtrl.getCorrida().getId().getCorridaId().equals(corrida.getId().getCorridaId()))
						&& (alertaCtrl.getCorrida().getId().getFeccorrida()).equals(corrida.getId().getFeccorrida())) {
					String style = "color:blue;Font-weight:bold";
					lstm.setStyle(style);
					lstm.setSelected(Boolean.TRUE);
				}
			}
		}

		lstm.setAttribute("data", corrida);
	}
}
