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

import org.springframework.beans.factory.annotation.Autowired;
import org.zkoss.util.resource.Labels;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.ListitemRenderer;

import com.rjconsultores.ventaboletos.entidad.Constante;
import com.rjconsultores.ventaboletos.entidad.SolicitudExpreso;
import com.rjconsultores.ventaboletos.entidad.TrayectosExpresos;
import com.rjconsultores.ventaboletos.entidad.Usuario;
import com.rjconsultores.ventaboletos.service.ConstanteService;
import com.rjconsultores.ventaboletos.service.UsuarioService;
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext;

public class RenderInformeViajesOcasionales implements ListitemRenderer {
	
	public RenderInformeViajesOcasionales() {
		super();
	}

	@Override
	public void render(Listitem item, Object data) throws Exception {
		TrayectosExpresos expresos = (TrayectosExpresos) data;
		
		Listcell lc = new Listcell(""); //Empresa
		lc.setParent(item);
		
		lc = new Listcell(DateUtil.getStringDate(expresos.getSolicitudExpresoId().getFechaSolicitud(), "dd/MM/yyyy")); //Fecha solicitud
		lc.setParent(item);
		
		lc = new Listcell(expresos.getSolicitudExpresoId().getSolicitudExpresoId().toString()); //# solicitud
		lc.setParent(item);
		
		lc = new Listcell(""); //Agencia contrató
		lc.setParent(item);
		
		lc = new Listcell(expresos.getSolicitudExpresoId().getStatusSolicitudExpresoId().toString()); //Estado
		lc.setParent(item);
		
		lc = new Listcell(""); //NIT
		lc.setParent(item);
		
		lc = new Listcell(""); //Razón social empresa solicitó
		lc.setParent(item);
		
		//Forma pgo
		ConstanteService constanteService = (ConstanteService)AppContext.getApplicationContext().getBean("constanteService");
		Constante constante = constanteService.buscarPorNomeConstante("FORMAPAGOCREDITO_ID");
		String pagoCreditoConstante = constante == null ? "" : constante.getValorconstante();
		
		if(expresos.getSolicitudExpresoId().getFormaPagoId() == null || expresos.getSolicitudExpresoId().getFormaPagoId() != Integer.valueOf(pagoCreditoConstante)) {
			lc = new Listcell(Labels.getLabel("label.classePagamento.contado"));
			lc.setParent(item);
		}else {
			lc = new Listcell(Labels.getLabel("expresosController.lbl.pagadoCredito"));
			lc.setParent(item);
		}
		
		lc = new Listcell(expresos.getSolicitudExpresoId().getValorCotizacion().toString()); //Valor expreso
		lc.setParent(item);
		
		//Usuario
		UsuarioService usuarioService = (UsuarioService)AppContext.getApplicationContext().getBean("usuarioService");
		Usuario usuario = usuarioService.obtenerCompletoID(expresos.getUsuarioId());
		lc = new Listcell(usuario.getNombUsuarioCompleto());
		lc.setParent(item);
		
		lc = new Listcell(expresos.getTrayectoExpresoId().toString()); //ID trayecto
		lc.setParent(item);
		
        lc = new Listcell(expresos.getSolicitudExpresoId().getCiudadOrigen().getNombciudad()); //Origen
        lc.setParent(item);
        
        lc = new Listcell(expresos.getSolicitudExpresoId().getCiudadDestino().getNombciudad()); //Destino
        lc.setParent(item);
        
        lc = new Listcell(""); //Observaciones
        lc.setParent(item);
        
        lc = new Listcell(DateUtil.getStringDate(expresos.getSolicitudExpresoId().getFechaHoraIda()), "dd/MM/yyyy hh:mm:ss"); //Fecha salida
        lc.setParent(item);
        
        lc = new Listcell(""); //Servicio
        lc.setParent(item);
        
        lc = new Listcell(""); //# Despacho
        lc.setParent(item);
        
        lc = new Listcell(""); //Inteno
        lc.setParent(item);
        
        lc = new Listcell(expresos.getNumPlaca() == null ? "N/A" : expresos.getNumPlaca().toString()); //Placa
        lc.setParent(item);
        
        lc = new Listcell(expresos.getSolicitudExpresoId().getCantidadPasajeros() == null ? "N/A" : expresos.getSolicitudExpresoId().getCantidadPasajeros().toString()); //Pasajeros
        lc.setParent(item);
        
        lc = new Listcell(expresos.getValorTrayecto() == null ? "N/A" : expresos.getValorTrayecto().toString()); //valor trayecto
        lc.setParent(item);
        
        lc = new Listcell(""); //Fecha despacho
        lc.setParent(item);
        
        lc = new Listcell(""); //Kilómetros
        lc.setParent(item);
        
        item.setAttribute("data", expresos);
	}

}
