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

import java.util.List;

import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.entidad.Tramo;
import com.rjconsultores.ventaboletos.vo.ruta.RutaVO;

/**
 * 
 * @author Rafius
 */
public interface RutaDAO extends GenericDAO<Ruta, Integer> {

	public List<Ruta> buscarPorTramo(Tramo tramo);

	public List<Ruta> buscarPorClaseServicio(ClaseServicio claseServicio);
	
	public List<Ruta> buscarPorClaseServicioEmpresa(ClaseServicio claseServicio, Empresa empresa);

	public List<Ruta> buscar(String nomeRuta, ClaseServicio claseServicio,Boolean nomeObrigatorio);

	public List<Ruta> obtenerPorEmpresa(Empresa empresa);

	public List<Ruta> buscarTodosExceto(Integer... idRuta);
	
	public List<Ruta> buscarTodosEstos(Integer[] idRutas);

	public List<Ruta> buscarNumRuta(String numRuta);

	/**
	 * Regresa la origen de la ruta
	 * 
	 * @param ruta
	 * @return
	 */
	public Parada buscarOrigen(Ruta ruta);

	/**
	 * Regresa el destino de la ruta
	 * 
	 * @param ruta
	 * @return
	 */
	public Parada buscarDestino(Ruta ruta);

	public List<RutaVO> buscaRutaPorNumeroSemDadoRepetido(String palavraPesquisaRuta);
	
	public List<RutaVO> buscaRutaParadas(Integer rotaId);

	public List<Ruta> buscaRuta(String palavraPesquisaRuta);
	
	public List<Ruta> buscaRuta(String palavraPesquisaRuta, OrgaoConcedente orgao);
	
	public List<Ruta> buscaRutasFromOrgao(OrgaoConcedente orgao);
	
	public List<Ruta> buscaSomenteRutasFromOrgao(OrgaoConcedente orgao);

	public List<Ruta> buscarPorRutaPorEmpresas(List<Empresa> lsEmpresas);
	
	public List<Ruta> buscarRutasPorEmpresaOrgaoConcedente(Empresa empresa, OrgaoConcedente orgao);
    
	public List<Ruta> buscarRutasPorEmpresaOrgaoConcedenteParadaIds(Empresa empresa, OrgaoConcedente orgao, Integer[] lsParadaIds) ;
	
	public void updateAsientosVendibles(Ruta ruta, Tramo viejoTramo, Tramo nuevoTramo);
	
	public List<Ruta> buscarRutasVendaEmbarcada(List<Integer> empresasIds, Integer rutaId, String numeroLinha, String descRuta, ClaseServicio classe);

	public List<Ruta> buscaLikeComboBox(String stringConsulta);
	
	public List<Ruta> buscarPorIds(Integer[] rutaIds);
	
	public List<Ruta> buscarPorOrgaoEcasetaPeaje(OrgaoConcedente orgao, Integer[] listCasetaPeaje, Empresa empresa);
	
	public List<Ruta> buscarRutasPorEmpresaOrgaoConcedenteClaseServicio(Empresa empresa, OrgaoConcedente orgao, ClaseServicio claseServicio);

}
