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

import java.util.Locale;

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

public class RenderCobrancaAdcPuntoVenta implements ListitemRenderer {

	public void render(Listitem lstm, Object o) throws Exception {
		CobrancaAdcPuntoVenta cobranca = (CobrancaAdcPuntoVenta) o;

		Listcell lc = new Listcell(cobranca.getCobrancaAddPuntoVenta_id() == null ? "" : cobranca.getCobrancaAddPuntoVenta_id().toString());
		lc.setParent(lstm);

		lc = new Listcell(cobranca.getDescricao());
		lc.setParent(lstm);

		Locale locale = new Locale("pt", "BR");
		lc = new Listcell(CurrencyUtil.getCurrencyBigDecimalFromStr(cobranca.getValor(), locale));
		lc.setParent(lstm);
		
		lc = new Listcell(getPeriodo(cobranca));
		lc.setParent(lstm);
		
		lc = new Listcell(cobranca.getEmpresa().getNombempresa());
		lc.setParent(lstm);

		lc = new Listcell(getCicloFrequencia(cobranca));
		lc.setParent(lstm);
		
		lc = new Listcell(getPagamentoDinheiro(cobranca));
		lc.setParent(lstm);
		
		lstm.setAttribute("data", cobranca);
	}
	
	private String getPeriodo(CobrancaAdcPuntoVenta cobranca) {
		StringBuilder periodo = new StringBuilder();
		
		periodo.append(DateUtil.getStringDate(cobranca.getDataInicial()));
		periodo.append(" - ");
		periodo.append(DateUtil.getStringDate(cobranca.getDataFinal()));
		
		return periodo.toString();
	}

	private String getCicloFrequencia(CobrancaAdcPuntoVenta cobranca) {
		StringBuilder mensagem = new StringBuilder();
		
		if(cobranca.getDiario()) {
			mensagem.append(Labels.getLabel("editarEmpresaController.diario.label") );
		} else if(cobranca.getSemanal()) {
			mensagem.append(Labels.getLabel("editarEmpresaController.semanal.label")).append("/");
			
			if(cobranca.getSegunda()) {
				mensagem.append(Labels.getLabel("editarEmpresaController.segunda.label"));
			} else if(cobranca.getTerca()) {
				mensagem.append(Labels.getLabel("editarEmpresaController.terca.label"));
			}  else if(cobranca.getQuarta()) {
				mensagem.append(Labels.getLabel("editarEmpresaController.quarta.label"));
			}  else if(cobranca.getQuinta()) {
				mensagem.append(Labels.getLabel("editarEmpresaController.quinta.label"));
			}  else if(cobranca.getSexta()) {
				mensagem.append(Labels.getLabel("editarEmpresaController.sexta.label"));
			}
		} else if(cobranca.getMensal()) {
			mensagem.append(Labels.getLabel("editarEmpresaController.mensal.label")).append("/");
			
			if(cobranca.getPrimeiroDiaUtil()) {
				mensagem.append(Labels.getLabel("editarEmpresaController.primeiroDia.label"));
			} else if(cobranca.getUltimoDiaUtil()) {
				mensagem.append(Labels.getLabel("editarEmpresaController.ultimoDia.label"));
			} 
		}
		
		return mensagem.toString();
	}
	
	private String getPagamentoDinheiro(CobrancaAdcPuntoVenta cobranca) {
		return Boolean.TRUE.equals(cobranca.getDescontarProximoCiclo())
				? Labels.getLabel("editarPuntoVentaController.lbAcumularCiclo") 
				: Labels.getLabel("editarPuntoVentaController.lbProximoDia");
	}
}
