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

import java.text.SimpleDateFormat;
import java.util.List;

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

import com.rjconsultores.ventaboletos.entidad.CategoriaDescuento;
import com.rjconsultores.ventaboletos.entidad.CategoriaPeriodo;

/**
 * 
 * @author Rafius
 */
public class RenderConfiguracionCategoriaDecuento implements ListitemRenderer {

	public void render(Listitem lstm, Object o) throws Exception {
		CategoriaDescuento categoria = (CategoriaDescuento) o;

		Listcell lc = new Listcell(categoria.getCategoria() != null ? categoria.getCategoria().getDesccategoria() : "0");
		lc.setParent(lstm);

		lc = new Listcell(categoria.getCantautorizada() != null ? categoria.getCantautorizada().toString() : "0");
		lc.setParent(lstm);

		lc = new Listcell(categoria.getDescuentoimporte() != null ? categoria.getDescuentoimporte().toString() : "0");
		lc.setParent(lstm);

		lc = new Listcell(categoria.getIndImprimeBoleto() != null ? (categoria.getIndImprimeBoleto() ? "Sim" : "Não") : "Não");
		lc.setParent(lstm);

		lc = new Listcell(categoria.getIndCuota() != null ? (categoria.getIndCuota() ? "Sim" : "Não") : "Não");
		lc.setParent(lstm);

		lc = new Listcell(categoria.getIndVentaAbierto() != null ? (categoria.getIndVentaAbierto() ? "Sim" : "Não") : "Não");
		lc.setParent(lstm);

		lc = new Listcell(categoria.getDescuentoporc() != null ? categoria.getDescuentoporc().toString() : "0");
		lc.setParent(lstm);

		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
		String vigencia = "";
		List<CategoriaPeriodo> lsCategoriaPeriodo = categoria.getCategoriaPeriodoList();
		for (CategoriaPeriodo cp : lsCategoriaPeriodo) {
			if (cp.getActivo()) {
				if (cp.getFecinicio() != null) {
					vigencia = vigencia + sdf.format(cp.getFecinicio());
				}

				vigencia = vigencia + " - ";

				if (cp.getFecfin() != null) {
					vigencia = vigencia + sdf.format(cp.getFecfin());
				}

				vigencia = vigencia + "; ";
			}
		}
		lc = new Listcell(vigencia);
		lc.setParent(lstm);

		String aplicaFeriado = "";
		if (categoria.getIndAplicaFeriado() != null) {
			for (CategoriaDescuento.DisponibilidadeFeriado p : CategoriaDescuento.DisponibilidadeFeriado.values()) {
				if (p.valor().equals(categoria.getIndAplicaFeriado())) {
					aplicaFeriado = p.descricao();
				}
			}
		}
		lc = new Listcell(aplicaFeriado);
		lc.setParent(lstm);

		StringBuilder sb = new StringBuilder(" ");

		if (categoria.getIndImporteTxEmbarque()) {
			sb.append("TX,");
		}
		if (categoria.getIndImportePedagio()) {
			sb.append("P,");
		}
		if (categoria.getIndImporteSeguro()) {
			sb.append("S,");
		}
		if (categoria.getIndImporteOutros()) {
			sb.append("O,");
		}

		lc = new Listcell(sb.substring(0, sb.length() - 1));
		lc.setParent(lstm);

		lc = new Listcell((categoria.getTiempoDesactivar() != null) ? "Sim" : "Não");
		lc.setParent(lstm);

		Integer tiempo = (categoria.getTiempoDesactivar() != null) ? categoria.getTiempoDesactivar() : categoria.getTiempoActivar();

		String horaMinuto = "-";
		if (tiempo != null) {
			int hora = tiempo / 60;
			int minuto = tiempo % 60;

			horaMinuto = hora + ":" + minuto;
		}

		lc = new Listcell(horaMinuto);
		lc.setParent(lstm);
		
		lc = new Listcell((categoria.getIndVentaSolamenteReserva() != null && categoria.getIndVentaSolamenteReserva()) ? "Sim" : "Não");
		lc.setParent(lstm);
		
		lc = new Listcell((categoria.getIndLiberacionSolamenteEnvasado() != null && categoria.getIndLiberacionSolamenteEnvasado()) ? "Sim" : "Não");
		lc.setParent(lstm);

		lc = new Listcell(categoria.getAsientosReservados());
		lc.setParent(lstm);
		
		lstm.setAttribute("data", categoria);
		
	}
}
