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

import java.util.Calendar;
import java.util.Date;

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.ReservaEspecialCliente;
import com.rjconsultores.ventaboletos.utilerias.DateUtil;

public class RenderReservaEspecialCliente implements ListitemRenderer {

	public void render(Listitem lstm, Object o) throws Exception {
		ReservaEspecialCliente reservaEspecialCliente = (ReservaEspecialCliente) o;

		//serviço
		Listcell lc = new Listcell(reservaEspecialCliente.getCorridaId().toString());
		lc.setParent(lstm);
		
		//Data Início
		lc = new Listcell(dataComum(reservaEspecialCliente.getFecinicio()));
		lc.setParent(lstm);
		
		//Data Final
		lc = new Listcell(dataComum(reservaEspecialCliente.getFecfinal()));
		lc.setParent(lstm);
		
		//Tempo Conferência 
		String[] horaMinutoTempoConfirmcao = capturarHoraMinuto(reservaEspecialCliente.getTempoConfirmacao());
		lc = new Listcell(horaMinutoTempoConfirmcao[0] + ":" + horaMinutoTempoConfirmcao[1]);
		lc.setParent(lstm);
		
		//Origem
		lc = new Listcell(reservaEspecialCliente.getOrigem().getDescparada());
		lc.setParent(lstm);
		
		//Destino
		lc = new Listcell(reservaEspecialCliente.getDestino().getDescparada());
		lc.setParent(lstm);
		

		//número poltrona
		lc = new Listcell(reservaEspecialCliente.getNumAsentoCorrida().toString());
		lc.setParent(lstm);
		
		//Dias semana
		lc = new Listcell(getDias(reservaEspecialCliente));
		lc.setParent(lstm);
		lstm.setAttribute("data", reservaEspecialCliente);

	}	
	

	private String dataComum(java.util.Date data){
		String retorno = "";
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(data);
		
		retorno = retorno + String.format("%02d",calendar.get(Calendar.DAY_OF_MONTH))+"/";
		retorno = retorno + String.format("%02d",calendar.get(Calendar.MONTH)+1)+"/";
		retorno = retorno + String.format("%02d",calendar.get(Calendar.YEAR));
		
		return retorno;
	}

	private String getDias(ReservaEspecialCliente reservaEspecialCliente) {
		String retorno = "";
		if (reservaEspecialCliente.getIndDomingo()) {
			retorno = retorno + Labels.getLabel("editarClienteController.msg.domingo")+", ";
		}
		if (reservaEspecialCliente.getIndSegunda()) {
			retorno = retorno + Labels.getLabel("editarClienteController.msg.lunes")+", ";
		}
		if (reservaEspecialCliente.getIndTerca()) {
			retorno = retorno + Labels.getLabel("editarClienteController.msg.martes")+", ";
		}
		if (reservaEspecialCliente.getIndQuarta()) {
			retorno = retorno + Labels.getLabel("editarClienteController.msg.miercoles")+", ";
		}
		if (reservaEspecialCliente.getIndQuinta()) {
			retorno = retorno + Labels.getLabel("editarClienteController.msg.jueves")+", ";
		}
		if (reservaEspecialCliente.getIndSexta()) {
			retorno = retorno + Labels.getLabel("editarClienteController.msg.viernes")+", ";
		}
		if (reservaEspecialCliente.getIndSabado()) {
			retorno = retorno + Labels.getLabel("editarClienteController.msg.sabado")+", ";
		}
		if (retorno.length() > 1) {
			retorno = retorno.substring(0, retorno.length() - 2);
		}
		return retorno;
	}
	
public String[] capturarHoraMinuto(Date data) {
		
		if(data == null) {
			return new String[] { "0", "0"};
		}
		
		String[] horaMinuto = new String[2];
		Calendar c = Calendar.getInstance();
		c.setTime(data);
		Long tempo = DateUtil.getElapsedMinutos(DateUtil.getFecInicio().getTime(), c.getTime());
		long minutos = (tempo % 60);
		Integer horas = (tempo.intValue() / 60);
		String sMinutos = String.valueOf(minutos);
		horaMinuto[0] = horas.toString();
		horaMinuto[1] = ((sMinutos.length() < 2) ? "0" + sMinutos : sMinutos);

		return horaMinuto;
	}
}
