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

import java.util.List;

import com.rjconsultores.ventaboletos.entidad.ParadaSecuencia;
import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.vo.esquemaoperacional.RutaTramoVO;
import com.rjconsultores.ventaboletos.vo.esquemaoperacional.SecuenciaRutaTramoCoeficienteVO;


/**
 *
 * @author Administrador
 */
public interface TramoRutaService {
	/**
	 * Grava la nueva configuracion de la ruta con los tramos.
	 * 
	 * Si no existen los tramos, ellos son generados.
	 * 
	 * 
	 * @param rutaTramoVO
	 * @throws BusinessException - Si hay algun valor no valido; Si la ruta ya existe
	 */
	public Ruta generarTramosRutas(RutaTramoVO rutaTramoVO, Boolean isRegreso) throws BusinessException;
	
	/**
	 * Genera la combinacion de la ruta.
	 * 
	 * @param rutaTramoVO
	 * @return
	 */
	public List<SecuenciaRutaTramoCoeficienteVO> generarCombinacion(RutaTramoVO rutaTramoVO);
	
	/**
	 * Renera los datos de regreso para la ruta informada
	 * @param rutaTramoVO
	 * @return
	 */
	public RutaTramoVO generarRutaRegreso(RutaTramoVO rutaTramoVO);
	
	/**
	 * Gera combinação na tela de Rutas
	 * @param rutaTramoVO
	 * @return
	 */
	public List<SecuenciaRutaTramoCoeficienteVO> generarCombinacionTrechoRuta(RutaTramoVO rutaTramoVO, List<ParadaSecuencia> secuenciasDestino);
	
	/**
	 * Gera tramos para uma ruta existente
	 * @param rutaTramoVO
	 * @param ruta Ruta para qual serão criados os tramos
	 * @throws BusinessException
	 */
	public void generarTramosRutaExistente(RutaTramoVO rutaTramoVO, Ruta ruta) throws BusinessException; 
	
	public void limparInconsistenciasTramo();
}
