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

import java.util.Date;
import java.util.List;

import com.rjconsultores.ventaboletos.dao.EsquemaCorridaDAO;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida;
import com.rjconsultores.ventaboletos.entidad.EsquemaOperacional;
import com.rjconsultores.ventaboletos.entidad.Marca;
import com.rjconsultores.ventaboletos.entidad.ParadaEsquema;
import com.rjconsultores.ventaboletos.entidad.RolOperativo;
import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.entidad.Tramo;

/**
 * 
 * @author Rafius
 */
public interface EsquemaCorridaService extends GenericService<EsquemaCorrida, Integer> {

	public List<EsquemaCorrida> buscarPorEsquemaOperacional(EsquemaOperacional eo);

	public List<EsquemaCorrida> buscarPorEmpresaCorrida(Empresa empresa);

	public List<EsquemaCorrida> buscar(Marca marca, RolOperativo rolOperativo, Ruta ruta, ClaseServicio claseServicio);

	public boolean buscarNumCorrida(Integer numCorrida, Integer numCorridaPisoExtra, boolean isDoublePiso);

	public void actualizaEsquemaTramo(List<ParadaEsquema> listParadaEsquema, EsquemaCorrida ec);

	public List<EsquemaCorrida> buscaDentroVigencia(Date dataGeracao);

	public boolean buscarEsquemaCorridaExisteTramo(Tramo tramo);

	public EsquemaCorrida buscaEsquemaPorRuta(Ruta ruta);
	
	public EsquemaCorrida buscarPeloNumCorrida(Integer numCorridaPisoExtra);

	/**
	 * See {@link EsquemaCorridaDAO#existe(Ruta, Integer)}
	 * 
	 * @param ruta
	 * @param paradaId
	 * @return
	 */
	public List<Integer> existe(Ruta ruta, Integer paradaId);

	public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNull(Date dataGeracao);

	public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNotNull(Date dataDe);

	public EsquemaCorrida obtenerByEsquemaCorrida(Integer numCorrida);

	public EsquemaCorrida buscaEsquemaPorRutaSemVigencia(Integer rutaId, Integer numCorrida);

	public List<EsquemaCorrida> buscarPorEmpresaCorridaAtiva(Empresa empresa, Date dataGeracaoInicial, Date dataGeracaoFinal);
}
