package com.rjconsultores.ventaboletos.web.gui.controladores.tarifas;

import java.util.Calendar;
import java.util.List;

import org.apache.commons.lang.math.NumberUtils;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.zkoss.util.resource.Labels;
import org.zkoss.zhtml.Messagebox;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zul.Comboitem;

import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.TaxaEmbLevante;
import com.rjconsultores.ventaboletos.entidad.TaxaEmbLevanteCtrl;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxParada;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextboxDecimal;

@Controller("editarTaxaEmbLevanteParadaController")
@Scope("prototype")
public class EditarTaxaEmbLevanteParadaController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 1L;

	private MyComboboxParada cmbParada;
	private MyTextboxDecimal txImporte;

	private TaxaEmbLevanteCtrl taxaEmbLevanteCtrl;
	private TaxaEmbLevante taxaEmbLevante;
	private MyListbox taxaEmbLevanteList;

	private List<TaxaEmbLevante> listTaxaLevante;

	@Override
	public void doAfterCompose(Component comp) throws Exception {

		taxaEmbLevanteCtrl = (TaxaEmbLevanteCtrl) Executions.getCurrent().getArg().get("taxaEmbLevanteCtrl");
		taxaEmbLevante = (TaxaEmbLevante) Executions.getCurrent().getArg().get("taxaEmbLevante");
		taxaEmbLevanteList = (MyListbox) Executions.getCurrent().getArg().get("taxaEmbLevanteList");
		listTaxaLevante = ((List<TaxaEmbLevante>) Executions.getCurrent().getArg().get("listTaxaLevante"));

		super.doAfterCompose(comp);

		if (taxaEmbLevante.getTaxaEmbLevanteId() != null) {
			Comboitem ci = new Comboitem(taxaEmbLevante.getParada().toString());
			ci.setAttribute("value", taxaEmbLevante.getParada());
			ci.setValue(taxaEmbLevante.getParada());
			ci.setParent(cmbParada);
			cmbParada.setSelectedItem(ci);

			txImporte.setValue(taxaEmbLevante.getImporte().toString());
		} else {
			txImporte.setValue("0");
		}
	}

	public void onClick$btnSalvar(Event ev) throws InterruptedException {

		if (cmbParada.getSelectedItem().getValue() != null) {
			taxaEmbLevante.setParada((Parada) cmbParada.getSelectedItem().getValue());
		} else {
			Messagebox.show(
					Labels.getLabel("MSG.Error"),
					Labels.getLabel("busquedaTaxaEmbLevanteController.window.title"),
					Messagebox.OK, Messagebox.EXCLAMATION);
		}
		if (txImporte.getValue() != null) {
			taxaEmbLevante.setImporte(NumberUtils.createBigDecimal(txImporte.getValue().replace(",", ".")));
		} else {
			Messagebox.show(
					Labels.getLabel("MSG.Error"),
					Labels.getLabel("busquedaTaxaEmbLevanteController.window.title"),
					Messagebox.OK, Messagebox.EXCLAMATION);
		}

		taxaEmbLevante.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
		taxaEmbLevante.setFecmodif(Calendar.getInstance().getTime());
		taxaEmbLevante.setActivo(Boolean.TRUE);

		if (taxaEmbLevante.getTaxaEmbLevanteId() != null) {
			taxaEmbLevanteList.removeItem(taxaEmbLevante);

			int index = listTaxaLevante.indexOf(taxaEmbLevante);
			listTaxaLevante.set(index, taxaEmbLevante);
			taxaEmbLevanteList.updateItem(taxaEmbLevante);

		} else {
			boolean existeParada = false;
			for (TaxaEmbLevante taxa : listTaxaLevante) {
				if (taxa.getParada().equals(taxaEmbLevante.getParada()))
					existeParada = true;
			}
			if (!existeParada) {
				taxaEmbLevante.setTaxaEmbLevanteCtrl(taxaEmbLevanteCtrl);
				listTaxaLevante.add(taxaEmbLevante);
				taxaEmbLevanteList.addItemNovo(taxaEmbLevante);
			} else {
				Messagebox.show(
						Labels.getLabel("MSG.Registro.Existe"),
						Labels.getLabel("busquedaTaxaEmbLevanteController.window.title"),
						Messagebox.OK, Messagebox.EXCLAMATION);
			}
		}
		closeWindow();

	}

	public TaxaEmbLevante getTaxaEmbLevante() {
		return taxaEmbLevante;
	}

	public void setTaxaEmbLevante(TaxaEmbLevante taxaEmbLevante) {
		this.taxaEmbLevante = taxaEmbLevante;
	}

	public MyListbox getTaxaEmbLevanteList() {
		return taxaEmbLevanteList;
	}

	public void setTaxaEmbLevanteList(MyListbox taxaEmbLevanteList) {
		this.taxaEmbLevanteList = taxaEmbLevanteList;
	}

	public TaxaEmbLevanteCtrl getTaxaEmbLevanteCtrl() {
		return taxaEmbLevanteCtrl;
	}

	public void setTaxaEmbLevanteCtrl(TaxaEmbLevanteCtrl taxaEmbLevanteCtrl) {
		this.taxaEmbLevanteCtrl = taxaEmbLevanteCtrl;
	}

}
