/*
 * 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.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;
import org.zkoss.zul.Row;

import com.rjconsultores.ventaboletos.entidad.FormaPago;
import com.rjconsultores.ventaboletos.service.FormaPagoService;
import com.rjconsultores.ventaboletos.utilerias.ApplicationProperties;
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 Administrador
 */
@Controller("editarFormaPagoController")
@Scope("prototype")
public class EditarFormaPagoController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 1L;
	@Autowired
	private FormaPagoService formaPagoService;
	private FormaPago formaPago;
	private MyListbox formaPagoList;
	private MyTextbox txtNome;
	private MyTextbox txtCvePago;
	private Button btnApagar;
	private BusquedaFormaPagoController busquedaFormaPagoController;
	private Button btnSalvar;
	private Radio rd1;
	private Radio rd2;
	private Radio rd3;
	private Radio rd4;
	private static Logger log = Logger.getLogger(EditarFormaPagoController.class);
	private Row rowEquivalencia;

	public FormaPago getFormaPago() {
		return formaPago;
	}

	public void setFormaPago(FormaPago formaPago) {
		this.formaPago = formaPago;
	}

	@Override
	public void doAfterCompose(Component comp) throws Exception {
		super.doAfterCompose(comp);
		busquedaFormaPagoController = (BusquedaFormaPagoController) Executions.getCurrent().getArg().get("busquedaFormaPagoController");
		formaPago = (FormaPago) Executions.getCurrent().getArg().get("formaPago");
		formaPagoList = (MyListbox) Executions.getCurrent().getArg().get("formaPagoList");
		
		if (formaPago.getFormapagoId() == null) {
			btnApagar.setVisible(Boolean.FALSE);
		} else {

			if (formaPago.getIndoperacion() == null) {
				rd4.setChecked(true);
			} else if (formaPago.getIndoperacion() == 1) {
				rd1.setChecked(true);
			} else if (formaPago.getIndoperacion() == 2) {
				rd2.setChecked(true);
			} else if (formaPago.getIndoperacion() == 3) {
				rd3.setChecked(true);
			}

			if (formaPago.getFormapagoId() <= 11 || (formaPago.getFormapagoId() >= 92 && formaPago.getFormapagoId() <= 99) || formaPago.getFormapagoId() == 37) {
				btnApagar.setVisible(Boolean.FALSE);
				txtNome.setDisabled(Boolean.TRUE);
				txtCvePago.setDisabled(Boolean.TRUE);

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

		if (!ApplicationProperties.getInstance().mostrarEquivalencia()) {
			rowEquivalencia.setVisible(Boolean.FALSE);
		}
		
		txtNome.focus();
	}

	public void onClick$btnSalvar(Event ev) throws InterruptedException {
		txtNome.getValue();
		txtCvePago.getValue();

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

			if (rd4.isChecked()) {
				formaPago.setIndoperacion(null);
			} else if (rd1.isChecked()) {
				formaPago.setIndoperacion(new Short("1"));
			} else if (rd2.isChecked()) {
				formaPago.setIndoperacion(new Short("2"));
			} else if (rd3.isChecked()) {
				formaPago.setIndoperacion(new Short("3"));
			}

			if (formaPago.getFormapagoId() == null) {
				List<FormaPago> lsFP =
						formaPagoService.buscarPorDescricao(formaPago.getDescpago());

				if (lsFP.isEmpty()) {
					formaPagoService.suscribir(formaPago);
					formaPagoList.addItem(formaPago);

					Messagebox.show(
							Labels.getLabel("editarFormaPagoController.MSG.suscribirOK"),
							Labels.getLabel("editarFormaPagoController.window.title"),
							Messagebox.OK, Messagebox.INFORMATION);
				} else {
					Messagebox.show(
							Labels.getLabel("MSG.Registro.Existe"),
							Labels.getLabel("editarFormaPagoController.window.title"),
							Messagebox.OK, Messagebox.EXCLAMATION);
				}
			} else {
				formaPagoService.actualizacion(formaPago);
				formaPagoList.updateItem(formaPago);

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

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

			if (resp == Messagebox.YES) {
				formaPagoService.borrar(formaPago);

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

				formaPagoList.removeItem(formaPago);

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