package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso;

import static com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso.RelatorioPosicaoVendaBilheteIdosoController.TITULO_RELATORIO;

import java.util.List;

import org.zkoss.zk.ui.event.Event;

import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente;
import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.relatorios.utilitarios.PagedListGenerico;
import com.rjconsultores.ventaboletos.service.RutaService;
import com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.eventos.EventListenerBtnPesquisar;
import com.rjconsultores.ventaboletos.web.utilerias.MensagensUtils;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox;

public class EventListenerBtnPesquisarLinha extends EventListenerBtnPesquisar<RutaService, Ruta> {

	private static final String MSG_INFORMAR_ORGAO_CONCEDENTE = "relatorioPosicaoVendaBilheteIdosoController.MSG.informarOrgaoConcedente";
	private RelatorioPosicaoVendaBilheteIdosoController controller;
	
	public EventListenerBtnPesquisarLinha(String beanService, MyListbox listBox, 
			MyTextbox textoDePesquisa, RelatorioPosicaoVendaBilheteIdosoController controller) {
		super(beanService, listBox, textoDePesquisa, TITULO_RELATORIO);
		this.controller = controller;
		comIncluiOpcaoTodos(true);
	}
	
	@Override
	public void onEvent(Event arg0) throws Exception {
		if (getOrgaoConcedenteSelecionado() != null) {
			getListBox().setData(obtemRegistrosPesquisa(getService(), getTextoDePesquisa().getText()));
			PagedListGenerico.validarPagedListSemRegistro(getListBox(), TITULO_RELATORIO);
		} else {
			MensagensUtils.showMessageInformation(MSG_INFORMAR_ORGAO_CONCEDENTE, TITULO_RELATORIO);
		}
	}
	
	private OrgaoConcedente getOrgaoConcedenteSelecionado() {
		return controller.getCmbOrgaoConcedente().getSelectedItem() != null 
				? (OrgaoConcedente) controller.getCmbOrgaoConcedente().getSelectedItem().getValue() : null;
	}

	@Override
	protected Ruta incluiTodos(int valorPk, String valorDescricao) {
		return new Ruta(valorPk, valorDescricao);
	}

	@Override
	protected List<Ruta> buscaRegistros(RutaService service, String valorAPesquisar) {
		return service.buscaRuta(valorAPesquisar, getOrgaoConcedenteSelecionado());
	}

}
