public static List<Trayecto> CrearListadoTrayectos(List<Parada> listParadas, int cuposDisponibles) { var listTrayectos = new List<Trayecto>(); for (var i = 0; i < listParadas.Count - 1; i++) { for (var j = i + 1; j < listParadas.Count; j++) { var trayectoActual = new Trayecto {TrayectoSimple = j - i == 1}; var paradaOrigen = new Parada { Latitud = Math.Round(Convert.ToDecimal(listParadas[i].Latitud), 6), Longitud = Math.Round(Convert.ToDecimal(listParadas[i].Longitud), 6), Direccion = listParadas[i].Direccion, NumeroParada = i+1, TipoParada = "I" }; var paradaDestino = new Parada { Latitud = Math.Round(Convert.ToDecimal(listParadas[j].Latitud), 6), Longitud = Math.Round(Convert.ToDecimal(listParadas[j].Longitud), 6), Direccion = listParadas[j].Direccion, NumeroParada = j+1, TipoParada = "F" }; trayectoActual.ParadaOrigen = paradaOrigen; trayectoActual.ParadaDestino = paradaDestino; trayectoActual.CuposDisponibles = cuposDisponibles; listTrayectos.Add(trayectoActual); } } return listTrayectos; }
//Busca la lista de trayectos que deben ser modificados en terminos de cupos, dado que se acepte una //solicitud para un trayecto simple private static List<Trayecto> DeterminarTrayectosAfectosTryS(Viaje pViaje, Trayecto pTrayectoSeleccionado) { var iParadaOrigen = pTrayectoSeleccionado.ParadaOrigen.NumeroParada; var iParadaDestino = pTrayectoSeleccionado.ParadaDestino.NumeroParada; return (from trayectoViaje in pViaje.TrayectosViaje let tempOrigen = trayectoViaje.ParadaOrigen.NumeroParada let tempDestino = trayectoViaje.ParadaDestino.NumeroParada where (iParadaOrigen > tempOrigen && iParadaOrigen < tempDestino) || (iParadaDestino > tempOrigen && iParadaDestino < tempDestino) select trayectoViaje).ToList(); }
//Busca la lista de trayectos que deben ser modificados en terminos de cupos, dado que se acepte una //solicitud para un trayecto compuesto private List<Trayecto> DeterminarTrayectosAfectosTryC(Viaje pViaje, Trayecto pTrayectoSeleccionado) { var trayectoAlgoritmoSimple = DeterminarTrayectosAfectosTryS(pViaje, pTrayectoSeleccionado); var trayectosPendientes = pViaje.TrayectosViaje.Except(trayectoAlgoritmoSimple); var iParadaOrigen = pTrayectoSeleccionado.ParadaOrigen.NumeroParada; var iParadaDestino = pTrayectoSeleccionado.ParadaDestino.NumeroParada; var listResult = (from trayectoViaje in trayectosPendientes let tempOrigen = trayectoViaje.ParadaOrigen.NumeroParada let tempDestino = trayectoViaje.ParadaDestino.NumeroParada where (tempOrigen > iParadaOrigen && tempOrigen < iParadaDestino) || (tempDestino > iParadaOrigen && tempDestino < iParadaDestino) select trayectoViaje).ToList(); listResult.AddRange(trayectoAlgoritmoSimple); return listResult; }
public TRAYECTO ToTrayecto(Trayecto pTrayecto) { var listParadas = new List<Parada> {pTrayecto.ParadaOrigen, pTrayecto.ParadaDestino}; return new TRAYECTO() { CUPOS = pTrayecto.CuposDisponibles, ID_TRAYECTO = pTrayecto.IdTrayecto, ID_VIAJE = pTrayecto.IdViaje, SOLICITUD = (pTrayecto.ListaSolicitudes != null)?pTrayecto.ListaSolicitudes.Select(ToSolicitud).ToList(): null, PARADA = ToParadas(listParadas) }; }