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

import com.rjconsultores.ventaboletos.entidad.Pricing;
import com.rjconsultores.ventaboletos.entidad.PricingPuntoVenta;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.service.PricingPuntoVentaService;
import com.rjconsultores.ventaboletos.service.PuntoVentaService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import java.util.Calendar;
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.Combobox;

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

	private static final long serialVersionUID = 1L;
	@Autowired
	private PricingPuntoVentaService pricingPuntoVentaService;
	@Autowired
	private PuntoVentaService puntoVentaService;
	private PricingPuntoVenta pricingPuntoVenta;
	private MyListbox pricingPuntoVentaList;
	private Combobox cmbPuntoVenta;
	private static Logger log = Logger.getLogger(EditarPricingPuntoVentaController.class);

	@Override
	public void doAfterCompose(Component comp) throws Exception {
		pricingPuntoVenta = (PricingPuntoVenta) Executions.getCurrent().getArg().get("pricingPuntoVenta");
		pricingPuntoVentaList = (MyListbox) Executions.getCurrent().getArg().get("pricingPuntoVentaList");

		super.doAfterCompose(comp);

		if (pricingPuntoVenta.getPuntoVenta() != null) {
			cmbPuntoVenta.setText(pricingPuntoVenta.getPuntoVenta().getNombpuntoventa());
		}

		cmbPuntoVenta.focus();
	}

	public void onClick$btnAdicionarPuntoVenta(Event ev) throws Exception {
		cmbPuntoVenta.getValue();

		try {
			PuntoVenta pv = (PuntoVenta) cmbPuntoVenta.getSelectedItem().getValue();
			try {
				Boolean existe = pricingPuntoVentaService.obtenerPricingPuntoVenta(pricingPuntoVenta.getPricing(), pv);
				if (existe) {
					Messagebox.show(
							Labels.getLabel("MSG.Registro.Existe"),
							Labels.getLabel("editarPricingController.windowPuntoVenta.title"),
							Messagebox.OK, Messagebox.EXCLAMATION);
				} else {
					pricingPuntoVenta.setPuntoVenta(pv);
					if (pricingPuntoVenta.getPricingptovtaId() != null) {
						pricingPuntoVentaService.actualizacion(pricingPuntoVenta);
						pricingPuntoVentaList.updateItem(pricingPuntoVenta);
					} else {
						pricingPuntoVentaService.suscribir(pricingPuntoVenta);
						pricingPuntoVentaList.addItemNovo(pricingPuntoVenta);
					}
					closeWindow();
				}
			} catch (Exception ex) {
				log.error("editarPricingController PuntoVenta: " + ex);
				Messagebox.show(
						Labels.getLabel("MSG.Error"),
						Labels.getLabel("editarPricingController.windowPuntoVenta.title"),
						Messagebox.OK, Messagebox.ERROR);
			}
		} catch (Exception ex) {
			log.error("Combobox PuntoVenta" + ex);
			Messagebox.show(
					Labels.getLabel("MSG.Error.combobox"),
					Labels.getLabel("editarPricingController.windowPuntoVenta.title"),
					Messagebox.OK, Messagebox.EXCLAMATION);
		}
	}

	public void onClick$btnRemoverPuntoVenta(Event ev) {
		try {
			PricingPuntoVenta pPuntoVenta = (PricingPuntoVenta) pricingPuntoVentaList.getSelected();
			if (pPuntoVenta != null) {
				int resp = Messagebox.show(
						Labels.getLabel("editarPricingController.MSG.borrarPerguntaPuntoVenta"),
						Labels.getLabel("editarPricingController.windowPuntoVenta.title"),
						Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);

				if (resp == Messagebox.YES) {
					pricingPuntoVenta.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
					pricingPuntoVenta.setFecmodif(Calendar.getInstance().getTime());
					pricingPuntoVenta.setActivo(Pricing.INATIVO);

					pricingPuntoVentaList.removeItem(pricingPuntoVenta);
					pricingPuntoVentaService.borrar(pricingPuntoVenta);
					closeWindow();
				}
			} else {
				Messagebox.show(
						Labels.getLabel("editarPricingController.MSG.selectItem"),
						Labels.getLabel("editarPricingController.windowPuntoVenta.title"),
						Messagebox.OK, Messagebox.EXCLAMATION);
			}
		} catch (Exception ex) {
			log.error(ex);
		}

	}

	public PricingPuntoVenta getPricingPuntoVenta() {
		return pricingPuntoVenta;
	}

	public void setPricingPuntoVenta(PricingPuntoVenta pricingPuntoVenta) {
		this.pricingPuntoVenta = pricingPuntoVenta;
	}

	public MyListbox getPricingPuntoVentaList() {
		return pricingPuntoVentaList;
	}

	public void setPricingPuntoVentaList(MyListbox pricingPuntoVentaList) {
		this.pricingPuntoVentaList = pricingPuntoVentaList;
	}

	public PricingPuntoVentaService getPricingPuntoVentaService() {
		return pricingPuntoVentaService;
	}

	public void setPricingPuntoVentaService(PricingPuntoVentaService pricingPuntoVentaService) {
		this.pricingPuntoVentaService = pricingPuntoVentaService;
	}

	public PuntoVentaService getPuntoVentaService() {
		return puntoVentaService;
	}

	public void setPuntoVentaService(PuntoVentaService puntoVentaService) {
		this.puntoVentaService = puntoVentaService;
	}
}
