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

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.Combobox;
import org.zkoss.zul.Messagebox;

import com.rjconsultores.ventaboletos.entidad.Cliente;
import com.rjconsultores.ventaboletos.entidad.ClienteCurso;
import com.rjconsultores.ventaboletos.entidad.Curso;
import com.rjconsultores.ventaboletos.service.ClienteCursoService;
import com.rjconsultores.ventaboletos.service.CursoService;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;

@Controller("editarClienteCursoController")
@Scope("prototype")
public class EditarClienteCursoController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 1L;

	@Autowired
	private CursoService cursoService;
	@Autowired
	private ClienteCursoService clienteCursoService;

	private List<Curso> lsCurso;
	private Combobox cmbCurso;

	private Cliente cliente;
	private MyListbox cursoList;
	private static Logger log = Logger.getLogger(EditarClienteCursoController.class);

	// private MyTextbox txtNome;

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

		super.doAfterCompose(comp);

		cliente = (Cliente) Executions.getCurrent().getArg().get("cliente");
		cursoList = (MyListbox) Executions.getCurrent().getArg().get("cursoList");

		lsCurso = cursoService.obtenerTodos();
	}

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

			Curso curso = (Curso) cmbCurso.getSelectedItem().getValue();
			boolean podeSalvar = true;
			if (cliente.getClienteId() == null) {
				podeSalvar = false;
			}

			if (podeSalvar) {

				ClienteCurso clienteCurso = new ClienteCurso();
				clienteCurso.setCliente(cliente);
				clienteCurso.setCurso(curso);

				clienteCursoService.suscribir(clienteCurso);
				cursoList.addItemNovo(curso);

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

				closeWindow();

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

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

	public List<Curso> getLsCurso() {
		return lsCurso;
	}

	public void setLsCurso(List<Curso> lsCurso) {
		this.lsCurso = lsCurso;
	}

}
