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

import java.util.HashMap;
import java.util.List;
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.zhtml.Messagebox;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Paging;
import org.zkoss.zul.Textbox;

import com.rjconsultores.ventaboletos.entidad.MotivoCancelVendaPacote;
import com.rjconsultores.ventaboletos.web.gui.controladores.tarifas.EnumTipoCancelVendaPacote;
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.RenderMotivoCancelVendaPacote;

/**
 *
 * @author Bruno
 */
@Controller("busquedaMotivoCancelVendaPacoteController")
@Scope("prototype")
public class BusquedaMotivoCancelVendaPacoteController extends MyGenericForwardComposer {

    @Autowired
    private transient PagedListWrapper<MotivoCancelVendaPacote> plwMotivoCancelVendaPacote;
    private MyListbox motivoCancelVendaPacoteList;
    private Paging pagingMotivoCancelVendaPacote;
    private Textbox txtNombre;
    private Combobox cmbTipoMotivo;
    private List<String> lsMotivoCancelamento;
    
    public Combobox getCmbTipoMotivo() {
        return cmbTipoMotivo;
    }

    public void setCmbTipoMotivo(Combobox cmbTipoMotivo) {
        this.cmbTipoMotivo = cmbTipoMotivo;
    }

    public Paging getPagingMotivoCancelVendaPacote() {
        return pagingMotivoCancelVendaPacote;
    }

    public void setPagingMotivoCancelVendaPacote(Paging pagingMotivoCancelVendaPacote) {
        this.pagingMotivoCancelVendaPacote = pagingMotivoCancelVendaPacote;
    }

    public MyListbox getMotivoCancelVendaPacoteList() {
        return motivoCancelVendaPacoteList;
    }

    public void setMotivoCancelVendaPacoteList(MyListbox motivoCancelVendaPacoteList) {
        this.motivoCancelVendaPacoteList = motivoCancelVendaPacoteList;
    }

    public PagedListWrapper<MotivoCancelVendaPacote> getPlwMotivoCancelVendaPacote() {
        return plwMotivoCancelVendaPacote;
    }

    public void setPlwMotivoCancelVendaPacote(PagedListWrapper<MotivoCancelVendaPacote> plwMotivoCancelVendaPacote) {
        this.plwMotivoCancelVendaPacote = plwMotivoCancelVendaPacote;
    }

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

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

    public void onClick$btnNovo(Event ev) {
        verPeriodo(new MotivoCancelVendaPacote());
    }

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

        motivoCancelVendaPacoteList.setItemRenderer(new RenderMotivoCancelVendaPacote());
        setLsMotivoCancelamento(EnumTipoCancelVendaPacote.obterBundleValues());
        lsMotivoCancelamento.add(0, " ");
        motivoCancelVendaPacoteList.addEventListener("onDoubleClick", new EventListener() {

            @Override
            public void onEvent(Event event) throws Exception {
                MotivoCancelVendaPacote mc = (MotivoCancelVendaPacote) motivoCancelVendaPacoteList.getSelected();
                verPeriodo(mc);
            }
        });

        refreshLista();

        txtNombre.focus();
    }

    private void verPeriodo(MotivoCancelVendaPacote mc) {
        if (mc == null) {
            return;
        }

        Map args = new HashMap();
        args.put("motivoCancelVendaPacote", mc);
        args.put("motivoCancelVendaPacoteList", motivoCancelVendaPacoteList);

        openWindow("/gui/configuraciones_comerciales/editarMotivoCancelVendaPacote.zul",
                Labels.getLabel("editarMotivoCancelVendaPacoteController.window.title"), args, MODAL);
    }

    private void refreshLista() {
        HibernateSearchObject<MotivoCancelVendaPacote> claseServicioBusqueda =
                new HibernateSearchObject<MotivoCancelVendaPacote>(MotivoCancelVendaPacote.class, pagingMotivoCancelVendaPacote.getPageSize());

        Comboitem ci = cmbTipoMotivo.getSelectedItem();
        String tipoMotivo = null;
        if (ci != null && ci.getValue() != " ") {
            tipoMotivo = (String) ci.getValue();
        }

        claseServicioBusqueda.addFilterLike("descmotivocancel", "%" + txtNombre.getText().trim().concat("%"));
        claseServicioBusqueda.addFilterEqual("tipomotivocancel", tipoMotivo);
        claseServicioBusqueda.addFilterEqual("activo", true);
        claseServicioBusqueda.addSortAsc("descmotivocancel");

        plwMotivoCancelVendaPacote.init(claseServicioBusqueda, motivoCancelVendaPacoteList, pagingMotivoCancelVendaPacote);

        if (motivoCancelVendaPacoteList.getData().length == 0) {
            try {
                Messagebox.show(Labels.getLabel("MSG.ningunRegistro"),
                        Labels.getLabel("busquedaMotivoCancelVendaPacoteController.window.title"),
                        Messagebox.OK, Messagebox.INFORMATION);
            } catch (InterruptedException ex) {
            }
        }
    }

	public List<String> getLsMotivoCancelamento() {
		return lsMotivoCancelamento;
	}

	public void setLsMotivoCancelamento(List<String> lsMotivoCancelamento) {
		this.lsMotivoCancelamento = lsMotivoCancelamento;
	}
    
}
