/*
 * 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.Marca;
import com.rjconsultores.ventaboletos.entidad.RedondeoCtrl;
import com.rjconsultores.ventaboletos.service.MarcaService;
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.MyTextboxDecimal;
import com.rjconsultores.ventaboletos.web.utilerias.paginacion.HibernateSearchObject;
import com.rjconsultores.ventaboletos.web.utilerias.paginacion.PagedListWrapper;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderRedondeoCtrl;
import com.trg.search.Filter;
import java.math.BigDecimal;
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.Checkbox;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Paging;

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

    @Autowired
    private transient PagedListWrapper<RedondeoCtrl> plwRedondeo;
    @Autowired
    private MarcaService marcaService;
    private MyListbox redondeoCtrlList;
    private Paging pagingCtrlRedondeo;
    private MyTextboxDecimal txtValorinicial;
    private MyTextboxDecimal txtValorfinal;
    private MyTextboxDecimal txtValorredondeo;
    private Checkbox chkIndaplicadescuento;
    private Checkbox chkIndaplicapricing;
    private Combobox cmbMarca;
    private List<Marca> lsMarca;

    public Checkbox getChkIndaplicadescuento() {
        return chkIndaplicadescuento;
    }

    public void setChkIndaplicadescuento(Checkbox chkIndaplicadescuento) {
        this.chkIndaplicadescuento = chkIndaplicadescuento;
    }

    public Checkbox getChkIndaplicapricing() {
        return chkIndaplicapricing;
    }

    public void setChkIndaplicapricing(Checkbox chkIndaplicapricing) {
        this.chkIndaplicapricing = chkIndaplicapricing;
    }

    public Paging getPagingRedondeo() {
        return pagingCtrlRedondeo;
    }

    public void setPagingRedondeo(Paging pagingRedondeo) {
        this.pagingCtrlRedondeo = pagingRedondeo;
    }

    public MyListbox getRedondeoList() {
        return redondeoCtrlList;
    }

    public void setRedondeoList(MyListbox redondeoList) {
        this.redondeoCtrlList = redondeoList;
    }

    public List<Marca> getLsMarca() {
        return lsMarca;
    }

    public void setLsMarca(List<Marca> lsMarca) {
        this.lsMarca = lsMarca;
    }

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

        lsMarca = marcaService.buscarTodosExceto(UsuarioLogado.getUsuarioLogado(),-1);

        super.doAfterCompose(comp);

        redondeoCtrlList.setItemRenderer(new RenderRedondeoCtrl());
        redondeoCtrlList.addEventListener("onDoubleClick", new EventListener() {

            @Override
            public void onEvent(Event event) throws Exception {
                RedondeoCtrl rc = (RedondeoCtrl) redondeoCtrlList.getSelected();
                verRedondo(rc);
            }
        });

        refreshLista();
    }

    private void verRedondo(RedondeoCtrl r) {
        if (r == null) {
            return;
        }

        Map args = new HashMap();
        args.put("redondeoCtrl", r);
        args.put("redondeoCtrlList", redondeoCtrlList);

        openWindow("/gui/tarifas/editarRedondeo.zul",
                Labels.getLabel("editarRedondeoController.window.title"), args, MODAL);
    }

    private void refreshLista() {
        HibernateSearchObject<RedondeoCtrl> excepcionRedondoBusqueda =
                new HibernateSearchObject<RedondeoCtrl>(RedondeoCtrl.class, pagingCtrlRedondeo.getPageSize());

        excepcionRedondoBusqueda.addFilterEqual("activo", Boolean.TRUE);

        plwRedondeo.init(excepcionRedondoBusqueda, redondeoCtrlList, pagingCtrlRedondeo);

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

    private void refreshListaPesquisa() {
        HibernateSearchObject<RedondeoCtrl> excepcionRedondoBusqueda =
                new HibernateSearchObject<RedondeoCtrl>(RedondeoCtrl.class, pagingCtrlRedondeo.getPageSize());

        excepcionRedondoBusqueda.addFilterEqual("activo", Boolean.TRUE);

//        excepcionRedondoBusqueda.addFilterEqual("indaplicadescuento", chkIndaplicadescuento.isChecked());
//        excepcionRedondoBusqueda.addFilterEqual("indaplicapricing", chkIndaplicapricing.isChecked());

        BigDecimal vlrIni = txtValorinicial.getValueDecimal();
        BigDecimal vlrFin = txtValorfinal.getValueDecimal();
        BigDecimal vlrRed = txtValorredondeo.getValueDecimal();

        if (vlrIni != null) {
            excepcionRedondoBusqueda.addFilterSome("redondeoList", Filter.equal("valorinicial", vlrIni));
        }
        if (vlrFin != null) {
            excepcionRedondoBusqueda.addFilterSome("redondeoList", Filter.equal("valorfinal", vlrFin));
        }
        if (vlrRed != null) {
            excepcionRedondoBusqueda.addFilterSome("redondeoList", Filter.equal("valorredondeo", vlrRed));
        }
        Marca marca = (Marca) (cmbMarca.getSelectedItem() != null ? cmbMarca.getSelectedItem().getValue() : null);
        if (marca != null) {
            excepcionRedondoBusqueda.addFilterSome("redondeoMarcaList", Filter.equal("marca", marca));
        }

        plwRedondeo.init(excepcionRedondoBusqueda, redondeoCtrlList, pagingCtrlRedondeo);

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

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

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

    public void onClick$btnNovo(Event ev) {
        verRedondo(new RedondeoCtrl());
    }
}
