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

import java.util.List;

import org.zkoss.util.resource.Labels;
import org.zkoss.zul.Decimalbox;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.ListitemRenderer;

import com.rjconsultores.ventaboletos.entidad.CategoriaRuta;

public class RenderConfiguracionCategoriaRuta implements ListitemRenderer {
	
	private Integer RUTA_TODAS = -1;
	private List<Intbox> lsTxtQtdadeAutorizada;
	private List<Decimalbox> lsTxtValor;
	private List<Decimalbox> lsTxtPorcentagem;
	private Listitem listItem;
	
	public RenderConfiguracionCategoriaRuta(List<Intbox> lsTxtQtdadeAutorizada, List<Decimalbox> lsValorDecimalBox, List<Decimalbox> lsPorcentagemDecimalBox) {
		this.lsTxtQtdadeAutorizada = lsTxtQtdadeAutorizada;
		this.lsTxtPorcentagem = lsPorcentagemDecimalBox;
		this.lsTxtValor = lsValorDecimalBox;
	}

    public void render(Listitem lstm, Object o) throws Exception {
    	CategoriaRuta categoria = (CategoriaRuta) o;
    	listItem = lstm;
        if(categoria.getActivo()){
	        Listcell lc = new Listcell(categoria.getRuta() == null ? "" : categoria.getRuta().getRutaId().toString());
	        lc.setParent(listItem);

	        lc = new Listcell(categoria.getRuta() == null ? "" : categoria.getRuta().getNumRuta());
	        lc.setParent(listItem);
	        
	        lc = new Listcell(categoria.getRuta() == null ? "" : categoria.getRuta().getDescruta());
	        lc.setParent(listItem);
	        String sentido = null;
	        if(categoria.getRuta().getRutaId().intValue() != RUTA_TODAS.intValue() ) {
	        	sentido = categoria.getRuta() != null && Boolean.TRUE.equals(categoria.getRuta().getIndSentidoIda()) ? 
	        			Labels.getLabel("editarConfiguracionCategoriaController.lblIda.value"):
	        				Labels.getLabel("editarConfiguracionCategoriaController.lblVolta.value");
	        	
	        }else {
	        	sentido = "";
	        }
	        lc = new Listcell(sentido);
	        lc.setParent(listItem);
	        
		    setupCelSQtdAutorizada(categoria);
	        
		    setupCelSPorcentagem(categoria);
		       
		    setupCelSValor(categoria);
	        
	        listItem.setValue(categoria);
        }
    }
    
    private void setupCelSQtdAutorizada(CategoriaRuta categoria) {
		Intbox intBox = lsTxtQtdadeAutorizada.get(listItem.getIndex());
		if (categoria.getQtdPoltronasAutorizadas() != null) {
			intBox.setValue(categoria.getQtdPoltronasAutorizadas().intValue());
		}
		Listcell lc = new Listcell();
		lc.appendChild(intBox);
		lc.setParent(listItem);

	}
    
    private void setupCelSPorcentagem(CategoriaRuta categoria) {
    	Decimalbox decimalBox = lsTxtPorcentagem.get(listItem.getIndex());
		if (categoria.getPorcentagemDesconto() != null) {
			decimalBox.setValue(categoria.getPorcentagemDesconto());
		}
		Listcell lc = new Listcell();
		lc.appendChild(decimalBox);
		lc.setParent(listItem);

	}
    
    private void setupCelSValor(CategoriaRuta categoria) {
    	Decimalbox decimalBox = lsTxtValor.get(listItem.getIndex());
		if (categoria.getValorDesconto() != null) {
			decimalBox.setValue(categoria.getValorDesconto());
		}
		Listcell lc = new Listcell();
		lc.appendChild(decimalBox);
		lc.setParent(listItem);

	}
}
