/*
 * 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.EsquemaCorrida;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.entidad.RutaSecuencia;

/**
 *
 * @author Rafius
 */
public interface RutaSecuenciaDAO extends GenericDAO<RutaSecuencia, Integer> {

    public List<RutaSecuencia> buscarSecuenciaOrdenado(Ruta ruta);
    
    public int borrarSecuencias(Ruta ruta);
    
    /**
     * Hace la validaciOn de la origen y destino dentro de la secuencia de la ruta. <br/>
     * 
     * La parada de origen no puede tener el numero de secuencia mayor o igual a la parada de destino<br/> 
     * @param ruta
     * @param origen
     * @param destino
     * @return
     */
    public boolean paradaSecuenciaValida(Ruta ruta, Parada origen,Parada destino);
    
    /**
     * Devolver los números de secuencia de ruta en la raza, el origen y el destino.
     * 
     * @param esquemaCorrida
     * @param origem
     * @param destino
     * @return secuencia de pares -> 3, 6
     */
    List<Short> obtenerNumRutaSecuenciaPorCorridaOrigemDestino(EsquemaCorrida esquemaCorrida, Parada origem, Parada destino);
    
    public List<Short> obtenerNumRutaSecuenciaPorCorridaOrigemDestinoId(EsquemaCorrida esquemaCorrida, Integer origemId, Integer destinoId);
    
    /**
     * Devolver los números de secuencia ocupada de ruta en la raza, el origen y el destino.
     * 
     * @param esquemaCorrida
     * @param asiento
     * @return todas las secuencias ocupados ordenadas -> 3, 4, 5, 7
     */
    List<Integer> obtenerNumRutaSecuenciaOcupadaPorCorridaAsiento(EsquemaCorrida esquemaCorrida, String asiento);
    
}
