/*
 * 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.OrgaoTramo;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Tramo;
import com.rjconsultores.ventaboletos.entidad.TramoServicio;
import com.rjconsultores.ventaboletos.entidad.Via;
import com.rjconsultores.ventaboletos.vo.tramo.TramoVO;

/**
 *
 * @author Administrador
 */
public interface TramoDAO extends GenericDAO<Tramo, Integer> {

    public Tramo obtenerPorOrigemDestino(Parada origem, Parada destino);

    public List<Tramo> obtenerListPorOrigemDestino(Parada origem, Parada destino);

    public Tramo obtenerTramotPorOrigemDestinoVia(Parada origem, Parada destino, Via via);

    public Tramo busca(Parada origem, Parada destino, Via via);
    
    public List<OrgaoTramo> getLsOrgaoTramo(Tramo tramo);

    
    /**
     * Hace la búsqueda del tramo que tiene origen - destino - via - clase servicio.
     * 
     * @param origem
     * @param destino
     * @param via
     * @param claseServicio
     * @return 
     */
    public Tramo obtenerTramoUnicoRuta(Parada origem, Parada destino, Via via, ClaseServicio claseServicio);

    public List<Tramo> buscarCveParada(String origen, String destino, String via);
    
    public Long count(Via via);
    public List<Via> obtenerViasOrigemDestino(Parada origem, Parada destino);
    public List<Tramo> obtenerPorOrigemDestinoFetchLazy(Parada origem, Parada destino) ;
    public List<TramoServicio> obtenerTramosServiciosPorTramo(Tramo t);
    
    public List<Tramo> buscarListaPorIds(List<Integer> tramoIds);

	public List<TramoVO> buscarListaPorIds(List<Integer> tramoIds, String chaveCorrida, boolean tarifaEmbarcada) throws Exception;
    
	List<Tramo> obtenerTramosPorOrigemDestino(Parada origem, Parada destino);
}
