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

import com.rjconsultores.ventaboletos.dao.TarjetaViajeDAO;
import java.text.SimpleDateFormat;

import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.ListitemRenderer;

import com.rjconsultores.ventaboletos.entidad.TarjetaViaje;
import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext;
import java.util.List;

public class RenderTarjetaViaje implements ListitemRenderer {

    private TarjetaViajeDAO tarjetaViajeDAO;

    public RenderTarjetaViaje() {
        tarjetaViajeDAO = (TarjetaViajeDAO) AppContext.getApplicationContext().getBean("tarjetaViajeDAO");
    }

    @Override
    public void render(Listitem lstm, Object o) throws Exception {

        TarjetaViaje tarjeta = (TarjetaViaje) o;

        String style = "";


        if (tarjeta.getIndRebote() != null && tarjeta.getIndRebote().equals(1)) {
            style = "color:green";
        }

        if (tarjeta.getConductor() != null && tarjeta.getConductor1() != null) {
            if (!tarjeta.getConductor().getConductorId().equals(tarjeta.getConductor1().getConductorId())) {
                style = "color:blue";
            }
            //Esse teste checa se houve uma volta para o autobus/condutor,
            //Se teve volta a TarjetaViaje tem que ser preta
            List<TarjetaViaje> ls = tarjetaViajeDAO.buscarTarjetaPorFiltros(tarjeta);
            if (ls.size() > 1) {
                boolean existeCorridaVolta = tarjetaViajeDAO.buscarTarjetaExisteVolta(tarjeta);
                if (existeCorridaVolta) {
                    style = "";
                } else {
                    style = "color:blue";
                }
            }

        }
        if (tarjeta.geteCorridaDuplicada() == true) {
            style = "color:red";

            //Esse teste checa se houve uma volta para o autobus/condutor,
            //Se teve volta a TarjetaViaje tem que ser preta
            List<TarjetaViaje> ls = tarjetaViajeDAO.buscarTarjetaPorFiltros(tarjeta);
            if (ls.size() > 1) {
                boolean existeCorridaVolta = tarjetaViajeDAO.buscarTarjetaExisteVolta(tarjeta);
                if (existeCorridaVolta) {
                    style = "";
                } else {
                    style = "color:red";
                }
            }
        }

        Listcell lc = new Listcell(tarjeta.getTarjetaviajeId().toString());
        lc.setParent(lstm);
        lc.setStyle(style);

        lc = new Listcell(tarjeta.getEmpresa() != null ? String.valueOf(tarjeta.getEmpresa().getNombempresa()) : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        lc = new Listcell(tarjeta.getAutobus() != null ? tarjeta.getAutobus().getNumautobus() : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");

        lc = new Listcell(tarjeta.getFecHorSalida() == null ? "" : sdf.format(tarjeta.getFecHorSalida()));
        lc.setParent(lstm);
        lc.setStyle(style);

        lc = new Listcell(tarjeta.getFoliotarjetaviaje() != null ? tarjeta.getFoliotarjetaviaje() : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        lc = new Listcell(tarjeta.getOrigen() != null ? tarjeta.getOrigen() : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        lc = new Listcell(tarjeta.getDestino() != null ? tarjeta.getDestino() : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        //busquedaTarjetaViajeController.lhTipo.label
        lc = new Listcell(tarjeta.getNumsecuencia() != null ? getDescSeq(tarjeta.getNumsecuencia().shortValue()) : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        //busquedaTarjetaViajeController.lhKmsAutobus.label
        lc = new Listcell(tarjeta.getKmReal() != null ? String.valueOf(tarjeta.getKmReal()) : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        lc = new Listcell(tarjeta.getNumCorrida() != null ? tarjeta.getNumCorrida().toString() : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        lc = new Listcell(tarjeta.getClaseServicio().getClaseservicioId() != null ? String.valueOf(tarjeta.getClaseServicio().getClaseservicioId()) : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        lc = new Listcell(tarjeta.getConductor() != null ? tarjeta.getConductor().getEmpleado().getCveEmpleado() : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        lc = new Listcell(tarjeta.getOrigen() != null ? tarjeta.getOrigen() : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        lc = new Listcell(tarjeta.getDestino() != null ? tarjeta.getDestino() : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        lc = new Listcell(tarjeta.getKmPagoConductor() != null ? String.valueOf(tarjeta.getKmPagoConductor()) : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        lc = new Listcell(tarjeta.getConductor1() != null ? tarjeta.getConductor1().getEmpleado().getCveEmpleado() : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        lc = new Listcell(tarjeta.getOrigen() != null ? tarjeta.getOrigen() : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        lc = new Listcell(tarjeta.getDestino() != null ? tarjeta.getDestino() : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        lc = new Listcell(tarjeta.getKmPagoConductor() != null ? String.valueOf(tarjeta.getKmPagoConductor()) : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        lc = new Listcell(tarjeta.getIndstatustarjeta() != null ? tarjeta.getIndstatustarjeta() : "");
        lc.setParent(lstm);
        lc.setStyle(style);

        lc = new Listcell(tarjeta.getFoliotarjetaviaje());
        lc.setParent(lstm);
        lc.setStyle(style);

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

    private String getDescSeq(Short numSeq) {
        if (numSeq == null) {
            return "";
        }

        if (numSeq.shortValue() == 1) {
            return "P";
        } else {
            return "S";
        }
    }
}
