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

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.rjconsultores.ventaboletos.dao.TramoServicioDAO;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Tramo;
import com.rjconsultores.ventaboletos.entidad.TramoServicio;
import com.rjconsultores.ventaboletos.entidad.Via;

/**
 * 
 * @author Rafius
 */
public interface TramoServicioService extends GenericService<TramoServicio, Integer> {

	public List<TramoServicio> buscarPorTramo(Tramo tramo);

	public List<TramoServicio> buscarPorTramoServico(Tramo tramo, ClaseServicio clase);

	/**
	 * Hace la busqueda del tramo servicio activo de acuerdo los parametros.
	 * 
	 * @param origen
	 * @param destino
	 * @param via
	 * @param clase
	 * @return
	 */
	public TramoServicio buscar(Parada origen, Parada destino, Via via, ClaseServicio clase);

	/**
	 * Genera un nuevo registro de tramo y tramo servicio sino ya existen.
	 * 
	 * Si el tramo y tramo tiempo existen, es retornado false.
	 * 
	 * @param origen
	 * @param destino
	 * @param via
	 * @param kmsReal
	 * @param kmsConductor
	 * @param tiempoRecorrido
	 * @param claseServicio
	 *            TODO
	 * @return - Si el tramo existe, return FALSE. Sino, retorna TRUE
	 */
	public boolean generarTramoTiempo(Parada origen, Parada destino, Via via, BigDecimal kmsReal, Date tiempoRecorrido, ClaseServicio claseServicio);
	
	/**
	 * {@link TramoServicioDAO#existenTiemposTramosEsquema(Integer)}
	 * 
	 * @param esquemaCorridaId
	 * @return
	 */
	public boolean existenTiemposTramosEsquema(Integer esquemaCorridaId);
}
