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

import com.rjconsultores.ventaboletos.entidad.TarjetaFidelidad;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.paginacion.HibernateSearchObject;
import com.rjconsultores.ventaboletos.web.utilerias.paginacion.PagedListWrapper;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderSendaAmigoParamAcumulaMasivo;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderTarjetaFidelidad;
import java.util.HashMap;
import java.util.Map;
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.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Paging;
import org.zkoss.zul.Textbox;

/**
 *
 * @author Shiro
 */
@Controller("busquedaGeneracionTarjetaSAController")
@Scope("prototype")
public class BusquedaGeneracionTarjetaSAController extends MyGenericForwardComposer {

    @Autowired
    private transient PagedListWrapper<TarjetaFidelidad> plwTarjetaFidelidad;
    private MyListbox tarjetaFidelidadList;
    private Paging pagingTarjetaFidelidad;
    private Textbox txtNombre;

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

        super.doAfterCompose(comp);

        tarjetaFidelidadList.setItemRenderer(new RenderTarjetaFidelidad());
        tarjetaFidelidadList.addEventListener("onDoubleClick", new EventListener() {

            @Override
            public void onEvent(Event event) throws Exception {
                TarjetaFidelidad pa = (TarjetaFidelidad) tarjetaFidelidadList.getSelected();
                verGeneracionTarjetaSA(pa);
            }
        });


        refreshLista();

        txtNombre.focus();
    }

    private void verGeneracionTarjetaSA(TarjetaFidelidad tf) {
        if (tf == null) {
            return;
        }

        Map args = new HashMap();
        args.put("tarjetaFidelidad", tf);
        args.put("tarjetaFidelidadList", tarjetaFidelidadList);

        openWindow("/gui/senda_amigo/editarGeneracionTarjetaSA.zul",
                Labels.getLabel("editarGeneracionTarjetaSAController.window.title"), args, MODAL);
    }

    public void onClick$btnRefresh(Event ev) {
        refreshLista();
    }

    public void onClick$btnNovo(Event ev) {
        verGeneracionTarjetaSA(new TarjetaFidelidad());
    }

    public void onClick$btnPesquisa(Event ev) throws InterruptedException {
        refreshLista();
    }

    private void refreshLista() {

        HibernateSearchObject<TarjetaFidelidad> tarifaBusqueda =
                new HibernateSearchObject<TarjetaFidelidad>(TarjetaFidelidad.class, pagingTarjetaFidelidad.getPageSize());

        tarifaBusqueda.addFilterEqual("activo", Boolean.TRUE);
        tarifaBusqueda.addFilterLike("descGeneracion",
                "%" + txtNombre.getText().trim().concat("%"));
        tarifaBusqueda.addSortAsc("descGeneracion");

        plwTarjetaFidelidad.init(tarifaBusqueda, tarjetaFidelidadList, pagingTarjetaFidelidad);
    }

    public Paging getPagingTarjetaFidelidad() {
        return pagingTarjetaFidelidad;
    }

    public void setPagingTarjetaFidelidad(Paging pagingTarjetaFidelidad) {
        this.pagingTarjetaFidelidad = pagingTarjetaFidelidad;
    }

    public PagedListWrapper<TarjetaFidelidad> getPlwTarjetaFidelidad() {
        return plwTarjetaFidelidad;
    }

    public void setPlwTarjetaFidelidad(PagedListWrapper<TarjetaFidelidad> plwTarjetaFidelidad) {
        this.plwTarjetaFidelidad = plwTarjetaFidelidad;
    }

    public MyListbox getTarjetaFidelidadList() {
        return tarjetaFidelidadList;
    }

    public void setTarjetaFidelidadList(MyListbox tarjetaFidelidadList) {
        this.tarjetaFidelidadList = tarjetaFidelidadList;
    }

    public Textbox getTxtNombre() {
        return txtNombre;
    }

    public void setTxtNombre(Textbox txtNombre) {
        this.txtNombre = txtNombre;
    }
}
