Modificación metodo buscarViaje()

parent 75d54b09
package com.carpooling.carpoolingaoraha.entidades; package com.carpooling.carpoolingaoraha.entidades;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.List;
import static com.carpooling.carpoolingaoraha.entidades.Rol.CONDUCTOR; import static com.carpooling.carpoolingaoraha.entidades.Rol.CONDUCTOR;
import static com.carpooling.carpoolingaoraha.entidades.Rol.PASAJERO; import static com.carpooling.carpoolingaoraha.entidades.Rol.PASAJERO;
...@@ -169,14 +167,43 @@ public class Usuario { ...@@ -169,14 +167,43 @@ public class Usuario {
List<Viaje> viajesDisponibles = new ArrayList<>(); List<Viaje> viajesDisponibles = new ArrayList<>();
for (Viaje viaje : todosLosViajes) { for (Viaje viaje : todosLosViajes) {
if (viaje.getOrigen().equals(origen) && viaje.getDestino().equals(destino)) { if (viaje.getOrigen().equals(origen) && viaje.getDestino().equals(destino) &&
if (viaje.getFechaSalida().equals(fecha)) { viaje.getFechaSalida().equals(fecha)) {
if (getRol().equals(PASAJERO)) { if (getRol().equals(PASAJERO)) {
viajesDisponibles.add(viaje); viajesDisponibles.add(viaje);
}
} }
} }
} }
// Filtrar las reservas asociadas a los viajes y calcular la puntuación de los conductores
List<Reserva> reservasAsociadas = new ArrayList<>();
for (Reserva reserva : sistemaCarPooling.getReservas()) {
if (viajesDisponibles.contains(reserva.getViaje())) {
reservasAsociadas.add(reserva);
}
}
// Ordenar la lista de viajes en función de la puntuación de los conductores
Collections.sort(viajesDisponibles, new Comparator<Viaje>() {
@Override
public int compare(Viaje viaje1, Viaje viaje2) {
int puntuacionConductor1 = 0;
int puntuacionConductor2 = 0;
for (Reserva reserva : reservasAsociadas) {
if (reserva.getViaje().equals(viaje1)) {
puntuacionConductor1 = Math.max(puntuacionConductor1, reserva.getConductor().getPuntuacion());
}
if (reserva.getViaje().equals(viaje2)) {
puntuacionConductor2 = Math.max(puntuacionConductor2, reserva.getConductor().getPuntuacion());
}
}
// Ordenar en orden descendente
return Integer.compare(puntuacionConductor2, puntuacionConductor1);
}
});
return viajesDisponibles; return viajesDisponibles;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment