/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.rjconsultores.ventaboletos.web.gui.controladores.catalogos;

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

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.Messagebox;

import com.rjconsultores.ventaboletos.entidad.TipoVenta;
import com.rjconsultores.ventaboletos.service.TipoVentaService;
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.MyTextbox;

/**
 * 
 * @author Rafius
 */
@Controller("editarTipoVentaController")
@Scope("prototype")
public class EditarTipoVentaController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 1L;
	@Autowired
	private TipoVentaService tipoVentaService;
	private TipoVenta tipoVenta;
	private MyListbox tipoVentaList;
	private static Logger log = Logger.getLogger(EditarTipoVentaController.class);
	private MyTextbox txtNome;

	public TipoVenta getTipoVenta() {
		return tipoVenta;
	}

	public void setTipoVenta(TipoVenta tipoVenta) {
		this.tipoVenta = tipoVenta;
	}

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

		TipoVenta tp = (TipoVenta) Executions.getCurrent().getArg().get("tipoVenta");
		tipoVenta = (tp.getTipoventaId() == null) ? tp : tipoVentaService.obtenerID(tp.getTipoventaId());
		tipoVentaList = (MyListbox) Executions.getCurrent().getArg().get("tipoVentaList");

		if (tipoVenta.getDesctipoventa() != null) {
			txtNome.setValue(tipoVenta.getDesctipoventa());
		}

		if (tipoVenta.getTipoventaId() != null) {
			if (tipoVenta.getTipoventaId() <= 12) {
				txtNome.setDisabled(Boolean.TRUE);

				Messagebox.show(
						Labels.getLabel("MSG.noEditabled"),
						Labels.getLabel("editarTipoVentaController.window.title"),
						Messagebox.OK, Messagebox.INFORMATION);
			}
		}

		txtNome.focus();
	}

	public void onClick$btnSalvar(Event ev) throws InterruptedException {
		txtNome.getValue();
		try {
			tipoVenta.setDesctipoventa(txtNome.getValue());
			tipoVenta.setActivo(Boolean.TRUE);
			tipoVenta.setFecmodif(Calendar.getInstance().getTime());
			tipoVenta.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());

			List<TipoVenta> lsTipoVenta = tipoVentaService.buscar(tipoVenta.getDesctipoventa());

			boolean podeSalvar = false;
			if (lsTipoVenta.isEmpty()) {
				podeSalvar = true;
			} else {
				for (TipoVenta m : lsTipoVenta) {
					if (m.getTipoventaId().equals(tipoVenta.getTipoventaId())) {
						podeSalvar = true;
					}
				}
			}

			if (!podeSalvar) {
				Messagebox.show(
						Labels.getLabel("MSG.Registro.Existe"),
						Labels.getLabel("editarTipoVentaController.window.title"),
						Messagebox.OK, Messagebox.EXCLAMATION);
			} else {

				if (tipoVenta.getTipoventaId() == null) {
					tipoVentaService.suscribir(tipoVenta);
					tipoVentaList.addItem(tipoVenta);
				} else {
					tipoVentaService.actualizacion(tipoVenta);
					tipoVentaList.updateItem(tipoVenta);
				}

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

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

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

			if (resp == Messagebox.YES) {

				tipoVentaService.borrar(tipoVenta);

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

				tipoVentaList.removeItem(tipoVenta);

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