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

import java.util.Calendar;

import org.apache.log4j.Logger;
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.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zul.Button;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Textbox;

import com.rjconsultores.ventaboletos.entidad.TarjetaCredito;
import com.rjconsultores.ventaboletos.service.TarjetaCreditoService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextboxDecimal;

@Controller("editarTarjetaCreditoController")
@Scope("prototype")
public class EditarTarjetaCreditoController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 1L;
	private static Logger log = Logger.getLogger(EditarTarjetaCreditoController.class);
	@Autowired
	private TarjetaCreditoService tarjetaCreditoService;
	private MyListbox tarjetaCreditoList;
	private Textbox txtDescTarjetaCredito;
	private Intbox txtCantMaxSinTasa;
	private Intbox txtCanMaxConTasa;
	private MyTextboxDecimal txtTasa;
	private Button btnApagar;
	private TarjetaCredito tarjetaCredito;

	public TarjetaCredito getTarjetaCredito() {
		return tarjetaCredito;
	}

	public void setTarjetaCredito(TarjetaCredito tarjetaCredito) {
		this.tarjetaCredito = tarjetaCredito;
	}

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

		tarjetaCredito = (TarjetaCredito) Executions.getCurrent().getArg().get("tarjetaCredito");
		tarjetaCreditoList = (MyListbox) Executions.getCurrent().getArg().get("tarjetaCreditoList");

		txtDescTarjetaCredito.focus();

		if (tarjetaCredito.getTarjetaCreditoId() == null) {
			btnApagar.setVisible(Boolean.FALSE);
		}
	}

	public void onClick$btnSalvar(Event ev) throws InterruptedException {
		txtDescTarjetaCredito.getValue();
		txtCantMaxSinTasa.getValue();
		txtCanMaxConTasa.getValue();
		txtTasa.getValue();

		try {
			tarjetaCredito.setActivo(Boolean.TRUE);
			tarjetaCredito.setFecmodif(Calendar.getInstance().getTime());
			tarjetaCredito.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());

			if (tarjetaCredito.getTarjetaCreditoId() == null) {
				tarjetaCreditoService.suscribir(tarjetaCredito);
				tarjetaCreditoList.addItemNovo(tarjetaCredito);
			} else {
				tarjetaCreditoService.actualizacion(tarjetaCredito);
				tarjetaCreditoList.updateItem(tarjetaCredito);
			}

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

			closeWindow();
		} catch (Exception ex) {
			log.error("editarTarjetaCreditoController: " + ex);
			Messagebox.show(
					Labels.getLabel("MSG.Error"),
					Labels.getLabel("editarTarjetaCreditoController.window.title"),
					Messagebox.OK, Messagebox.ERROR);
		}
	}

	public void onClick$btnApagar(Event ev) {
		try {
			int resp = Messagebox.show(
					Labels.getLabel("editarTarjetaCreditoController.MSG.borrarPergunta"),
					Labels.getLabel("editarTarjetaCreditoController.window.title"),
					Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);

			if (resp == Messagebox.YES) {

				tarjetaCreditoService.borrar(tarjetaCredito);

				Messagebox.show(
						Labels.getLabel("editarTarjetaCreditoController.MSG.borrarOK"),
						Labels.getLabel("editarTarjetaCreditoController.window.title"),
						Messagebox.OK, Messagebox.INFORMATION);

				tarjetaCreditoList.removeItem(tarjetaCredito);

				closeWindow();
			}
		} catch (Exception ex) {
			log.error(ex);
		}
	}
}
