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

import java.math.BigDecimal;

import org.springframework.beans.factory.annotation.Autowired;
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.zk.ui.util.Clients;
import org.zkoss.zul.Button;

import com.rjconsultores.ventaboletos.entidad.CoeficienteTarifa;
import com.rjconsultores.ventaboletos.service.CoeficienteTarifaService;
import com.rjconsultores.ventaboletos.utilerias.RegistroConDependenciaException;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextboxDecimal;

@Controller("editarCoeficienteTarifaController")
@Scope("prototype")
public class EditarCoeficienteTarifaController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 1L;
	@Autowired
	private CoeficienteTarifaService coeficienteTarifaService;
	private CoeficienteTarifa coeficienteTarifa;
	private MyListbox coeficienteTarifaList;
	private Button btnApagar;
	private MyTextbox txtNome;
	private MyTextboxDecimal txtCoeficiente;

	public CoeficienteTarifa getCoeficienteTarifa() {
		return coeficienteTarifa;
	}

	public void setCoeficienteTarifa(CoeficienteTarifa coeficienteTarifa) {
		this.coeficienteTarifa = coeficienteTarifa;
	}

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

		coeficienteTarifa = (CoeficienteTarifa) Executions.getCurrent().getArg().get("coeficienteTarifa");
		coeficienteTarifaList = (MyListbox) Executions.getCurrent().getArg().get("coeficienteTarifaList");

		if (coeficienteTarifa.getCoeficienteId() == null) {
			btnApagar.setVisible(Boolean.FALSE);
		} else {
			txtCoeficiente.setValue(coeficienteTarifa.getCoeficiente().toString());
		}

		txtNome.focus();
	}

	public void onClick$btnSalvar(Event ev) throws InterruptedException {
		txtNome.getValue();
		txtCoeficiente.getValue();
		coeficienteTarifa.setCoeficiente(new BigDecimal(txtCoeficiente.getValue()));

		if (coeficienteTarifa.getCoeficienteId() == null) {
			coeficienteTarifaService.suscribir(coeficienteTarifa);
		} else {
			coeficienteTarifaService.actualizacion(coeficienteTarifa);

		}

		coeficienteTarifaList.updateItem(coeficienteTarifa);

		Messagebox.show(
				Labels.getLabel("editarCoeficienteTarifaController.MSG.suscribirOK"),
				Labels.getLabel("editarCoeficienteTarifaController.window.title"),
				Messagebox.OK, Messagebox.INFORMATION);

		closeWindow();
	}

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

		Integer resp = Messagebox.show(
				Labels.getLabel("editarCoeficienteTarifaController.MSG.borrarPergunta"),
				Labels.getLabel("editarCoeficienteTarifaController.window.title"),
				Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);

		if (resp.equals(Messagebox.YES)) {

			try {
				coeficienteTarifaService.borrar(coeficienteTarifa);
				Messagebox.show(
						Labels.getLabel("editarCoeficienteTarifaController.MSG.borrarOK"),
						Labels.getLabel("editarCoeficienteTarifaController.window.title"),
						Messagebox.OK, Messagebox.INFORMATION);

				coeficienteTarifaList.removeItem(coeficienteTarifa);

				closeWindow();
			} catch (RegistroConDependenciaException e) {
				Clients.alert(
						e.getLocalizedMessage(),
						Labels.getLabel("editarCoeficienteTarifaController.window.title"),
						Messagebox.INFORMATION);
			}

		}
	}
}
