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

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

import org.apache.logging.log4j.LogManager;
import org.apache.logging.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.GrupoCategoria;
import com.rjconsultores.ventaboletos.service.GrupoCategoriaService;
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;

@Controller("editarGrupoCategoriaController")
@Scope("prototype")
public class EditarGrupoCategoriaController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 1L;
	@Autowired
	private GrupoCategoriaService grupoCategoriaService;

	private GrupoCategoria grupoCategoria;
	private MyListbox grupoCategoriaList;
	private static Logger log = LogManager.getLogger(EditarGrupoCategoriaController.class);
	private MyTextbox txtDesc;
	private BusquedaGrupoCategoriaController busquedaGrupoCategoriaController;

	@Override
	public void doAfterCompose(Component comp) throws Exception {
		super.doAfterCompose(comp);
		grupoCategoria = (GrupoCategoria) Executions.getCurrent().getArg().get("grupoCategoria");
		grupoCategoriaList = (MyListbox) Executions.getCurrent().getArg().get("grupoCategoriaList");
		busquedaGrupoCategoriaController = (BusquedaGrupoCategoriaController) Executions.getCurrent().getArg().get("busquedaGrupoCategoriaController");
		txtDesc.focus();
	}

	public void onClick$btnSalvar(Event ev) throws InterruptedException {
		txtDesc.getValue();
		try {
			grupoCategoria.setActivo(true);
			grupoCategoria.setFecmodif(Calendar.getInstance().getTime());
			grupoCategoria.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());

			if (grupoCategoria.getGrupoCategoriaId() == null) {
				List<GrupoCategoria> lsGrupoCategoria = grupoCategoriaService.buscar(grupoCategoria.getDescGrupo().trim());

				if (lsGrupoCategoria.isEmpty()) {
					grupoCategoriaService.suscribir(grupoCategoria);
					grupoCategoriaList.addItemNovo(grupoCategoria);
					busquedaGrupoCategoriaController.refreshLista();
					Messagebox.show(
							Labels.getLabel("editarCategoriaController.MSG.suscribirOK"),
							Labels.getLabel("editarCategoriaController.window.title"),
							Messagebox.OK, Messagebox.INFORMATION);
					
				} else {
					Messagebox.show(
							Labels.getLabel("MSG.Registro.Existe"),
							Labels.getLabel("editarCategoriaController.window.title"),
							Messagebox.OK, Messagebox.EXCLAMATION);
				}
			} else {
				grupoCategoriaService.actualizacion(grupoCategoria);
				grupoCategoriaList.updateItem(grupoCategoria);
				busquedaGrupoCategoriaController.refreshLista();
				Messagebox.show(
						Labels.getLabel("editarCategoriaController.MSG.suscribirOK"),
						Labels.getLabel("editarCategoriaController.window.title"),
						Messagebox.OK, Messagebox.INFORMATION);
				
			}

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

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

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

		if (resp == Messagebox.YES) {

			grupoCategoriaService.borrar(grupoCategoria);
			busquedaGrupoCategoriaController.refreshLista();

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

			grupoCategoriaList.removeItem(grupoCategoria);

			closeWindow();
		}
	}

	public GrupoCategoria getGrupoCategoria() {
		return grupoCategoria;
	}

	public void setGrupoCategoria(GrupoCategoria grupoCategoria) {
		this.grupoCategoria = grupoCategoria;
	}

	public MyListbox getGrupoCategoriaList() {
		return grupoCategoriaList;
	}

	public void setGrupoCategoriaList(MyListbox grupoCategoriaList) {
		this.grupoCategoriaList = grupoCategoriaList;
	}

	public GrupoCategoriaService getGrupoCategoriaService() {
		return grupoCategoriaService;
	}

	public void setGrupoCategoriaService(GrupoCategoriaService grupoCategoriaService) {
		this.grupoCategoriaService = grupoCategoriaService;
	}

}
