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

import com.rjconsultores.ventaboletos.entidad.ExcepcionRedondo;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.service.ExcepcionRedondoService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxParada;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
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.zhtml.Messagebox;
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.Radio;

/**
 * 
 * @author Administrador
 */
@Controller("editarExceptionRedondoController")
@Scope("prototype")
public class EditarExceptionRedondoController extends MyGenericForwardComposer {

	@Autowired
	private ExcepcionRedondoService excepcionRedondoService;
	private ExcepcionRedondo excepcionRedondo;
	private MyListbox excepcionRedondoList;
	private Button btnApagar;
	private MyComboboxParada cmbOrigem;
	private MyComboboxParada cmbDestino;
	private Radio radioA;
	private Radio radioC;
	private static Logger log = Logger.getLogger(EditarExceptionRedondoController.class);

	public Button getBtnApagar() {
		return btnApagar;
	}

	public void setBtnApagar(Button btnApagar) {
		this.btnApagar = btnApagar;
	}

	public MyComboboxParada getCmbDestino() {
		return cmbDestino;
	}

	public void setCmbDestino(MyComboboxParada cmbDestino) {
		this.cmbDestino = cmbDestino;
	}

	public MyComboboxParada getCmbOrigem() {
		return cmbOrigem;
	}

	public void setCmbOrigem(MyComboboxParada cmbOrigem) {
		this.cmbOrigem = cmbOrigem;
	}

	public ExcepcionRedondo getExcepcionRedondo() {
		return excepcionRedondo;
	}

	public void setExcepcionRedondo(ExcepcionRedondo excepcionRedondo) {
		this.excepcionRedondo = excepcionRedondo;
	}

	public Radio getRadioA() {
		return radioA;
	}

	public void setRadioA(Radio radioA) {
		this.radioA = radioA;
	}

	public Radio getRadioC() {
		return radioC;
	}

	public void setRadioC(Radio radioC) {
		this.radioC = radioC;
	}

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

		excepcionRedondo = (ExcepcionRedondo) Executions.getCurrent().getArg().get("excepcionRedondo");
		excepcionRedondoList = (MyListbox) Executions.getCurrent().getArg().get("excepcionRedondoList");

		if (excepcionRedondo.getExcepcionredondoId() == null) {
			btnApagar.setVisible(Boolean.FALSE);
			radioA.setChecked(true);
			excepcionRedondo.setIndtipo("A");
		} else {
			Parada origem = excepcionRedondo.getOrigem();
			if (origem != null) {
				cmbOrigem.setText(origem.getDescparada());
			}

			Parada destino = excepcionRedondo.getDestino();
			if (destino != null) {
				cmbDestino.setText(destino.getDescparada());
			}

			if (excepcionRedondo.getIndtipo().equals("A")) {
				radioA.setChecked(true);
			} else {
				radioC.setChecked(true);
			}
		}
	}

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

		cmbOrigem.getValue(true);
		cmbDestino.getValue(true);

		try {

			
			if (excepcionRedondo.getExcepcionredondoId() == null) {
				excepcionRedondo = excepcionRedondoService.suscribirActualizar(excepcionRedondo);
				excepcionRedondoList.addItem(excepcionRedondo);
			} else {
				excepcionRedondo = excepcionRedondoService.suscribirActualizar(excepcionRedondo);
				excepcionRedondoList.updateItem(excepcionRedondo);
			}
			Messagebox.show(Labels.getLabel("editarExceptionRedondoController.btnFechar.MSG.SuscbrirOK"),
					Labels.getLabel("editarExceptionRedondoController.window.title"), Messagebox.OK, Messagebox.INFORMATION);

			closeWindow();

		} catch (BusinessException ex) {
			Messagebox.show(ex.getMessage(), Labels.getLabel("editarExceptionRedondoController.window.title"), Messagebox.OK,
					Messagebox.EXCLAMATION);
		}
	}

	public void onClick$btnApagar(Event ev) {
		excepcionRedondo.setFecmodif(Calendar.getInstance().getTime());
		excepcionRedondo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
		excepcionRedondo.setActivo(Boolean.TRUE);

		try {
			int opcao = Messagebox.show(Labels.getLabel("editarExceptionRedondoController.btnFechar.MSG.Deseja.Borrar"),
					Labels.getLabel("editarExceptionRedondoController.window.title"), Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);

			if (opcao == Messagebox.YES) {
				excepcionRedondoService.borrar(excepcionRedondo);
				excepcionRedondoList.removeItem(excepcionRedondo);

				Messagebox.show(Labels.getLabel("editarExceptionRedondoController.btnFechar.MSG.BorrarOK"),
						Labels.getLabel("editarExceptionRedondoController.window.title"), Messagebox.OK, Messagebox.INFORMATION);

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

	public void onClick$radioA(Event ev) {
		excepcionRedondo.setIndtipo("A");
	}

	public void onClick$radioC(Event ev) {
		excepcionRedondo.setIndtipo("C");
	}
}
