Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Alvaro Ordóñez Romero
/
DAE-aha00026-aor00039
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
b700332b
authored
Nov 22, 2023
by
Alvaro Ordóñez Romero
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Cambios por Álvaro Herrera
parent
98af7fa1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
54 additions
and
2 deletions
src/main/java/com/carpooling/carpoolingaoraha/entidades/Usuario.java
src/main/java/com/carpooling/carpoolingaoraha/services/ServicioCarPooling.java
src/test/java/com/carpooling/carpoolingaoraha/services/ServicioCarPoolingTest.java
src/main/java/com/carpooling/carpoolingaoraha/entidades/Usuario.java
View file @
b700332b
...
...
@@ -75,6 +75,10 @@ public class Usuario {
public
Usuario
()
{
this
.
puntuacion
=
new
ArrayList
<>();
this
.
viajesOfertados
=
new
ArrayList
<>();
this
.
solicitudesPendientes
=
new
ArrayList
<>();
this
.
historicoSolicitudes
=
new
ArrayList
<>();
}
public
Usuario
(
String
nombre
,
String
apellidos
,
Date
FNac
,
String
DNI
,
int
telefono
,
String
email
,
...
...
@@ -196,6 +200,14 @@ public class Usuario {
}
throw
new
ReservaNoRegistrada
();
}
public
boolean
ofrecerViaje
(
Reserva
v
){
if
(
this
.
rol
==
Rol
.
CONDUCTOR
||
this
.
rol
==
Rol
.
AMBOS
)
{
//Crea una reserva
this
.
viajesOfertados
.
add
(
v
.
getIdReserva
());
return
true
;
}
throw
new
ReservaNoRegistrada
();
}
public
boolean
aceptarPasajero
(
int
idReserva
,
String
DNI
,
Rol
rol
){
//Le pasamos el rol del conductor
if
(
rol
==
Rol
.
CONDUCTOR
||
rol
==
Rol
.
AMBOS
){
...
...
@@ -303,6 +315,29 @@ public class Usuario {
return
false
;
}
public
boolean
solicitarViaje
(
int
idReserva
,
Solicitud
s
)
{
if
(
rol
==
Rol
.
PASAJERO
||
rol
==
Rol
.
AMBOS
)
{
for
(
Reserva
reserva
:
sistemaCarPooling
.
getReservas
())
{
if
(
idReserva
==
reserva
.
getIdReserva
()
&&
!
reserva
.
getReservaConcluida
())
{
// Verificar si ya hay una solicitud pendiente para esta reserva
if
(!
tieneSolicitudPendiente
(
reserva
))
{
// Crear una nueva solicitud y agregarla a la lista de solicitudes del usuario
s
.
setReserva
(
reserva
);
s
.
setPasajero
(
this
);
this
.
solicitudesPendientes
.
add
(
s
);
return
true
;
}
else
{
throw
new
SolicitudYaExistente
();
}
}
}
// Si no se encuentra la reserva con el ID proporcionado
throw
new
RuntimeException
(
"Reserva no encontrada"
);
}
// Si el rol no es PASAJERO o AMBOS
return
false
;
}
private
boolean
tieneSolicitudPendiente
(
Reserva
reserva
)
{
// Verificar si ya hay una solicitud pendiente para esta reserva
return
this
.
solicitudesPendientes
.
stream
().
anyMatch
(
solicitud
->
solicitud
.
getReserva
().
equals
(
reserva
));
...
...
src/main/java/com/carpooling/carpoolingaoraha/services/ServicioCarPooling.java
View file @
b700332b
...
...
@@ -6,6 +6,7 @@ import com.carpooling.carpoolingaoraha.entidades.Usuario;
import
com.carpooling.carpoolingaoraha.entidades.Viaje
;
import
com.carpooling.carpoolingaoraha.excepciones.*
;
import
com.carpooling.carpoolingaoraha.repositorios.ReservaRepository
;
import
com.carpooling.carpoolingaoraha.repositorios.SolicitudRepository
;
import
com.carpooling.carpoolingaoraha.repositorios.UsuarioRepository
;
import
com.carpooling.carpoolingaoraha.repositorios.ViajeRepository
;
import
jakarta.transaction.Transactional
;
...
...
@@ -22,6 +23,8 @@ import javax.validation.constraints.NotNull;
import
java.util.List
;
import
java.util.Optional
;
import
static
com
.
carpooling
.
carpoolingaoraha
.
entidades
.
Usuario
.
Rol
.
CONDUCTOR
;
@Service
@Validated
public
class
ServicioCarPooling
{
...
...
@@ -34,6 +37,8 @@ public class ServicioCarPooling {
@Autowired
UsuarioRepository
repositorioUsuario
;
@Autowired
SolicitudRepository
repositorioSolicitud
;
@Autowired
public
ServicioCarPooling
()
{
...
...
@@ -134,12 +139,24 @@ public class ServicioCarPooling {
@CacheEvict
(
value
=
"usuarios"
,
key
=
"#dni"
)
public
Reserva
crearReserva
(
@NotBlank
String
dni
)
{
Usuario
usuario
=
repositorioUsuario
.
buscar
(
dni
).
orElseThrow
(
UsuarioNoRegistrado:
:
new
);
//correcto??
Reserva
reserva
=
new
Reserva
();
usuario
.
setRol
(
CONDUCTOR
);
usuario
.
ofrecerViaje
(
reserva
);
repositorioReservas
.
guardar
(
reserva
);
return
reserva
;
}
@CacheEvict
(
value
=
"solicitudes"
,
key
=
"#id"
)
public
Solicitud
crearSolicitud
(
@NotBlank
String
dni
,
@NotBlank
int
idReserva
)
{
Usuario
usuario
=
repositorioUsuario
.
buscar
(
dni
).
orElseThrow
(
UsuarioNoRegistrado:
:
new
);
Reserva
reserva
=
repositorioReservas
.
buscar
(
idReserva
).
orElseThrow
(
UsuarioNoRegistrado:
:
new
);
Solicitud
s
=
new
Solicitud
();
usuario
.
solicitarViaje
(
reserva
.
getIdReserva
(),
s
);
repositorioSolicitud
.
guardar
(
s
);
return
s
;
}
/**
@Transactional
public List<Reserva> verReserva (@NotBlank String idReserva) {
...
...
src/test/java/com/carpooling/carpoolingaoraha/services/ServicioCarPoolingTest.java
View file @
b700332b
package
com
.
carpooling
.
carpoolingaoraha
.
services
;
import
com.carpooling.carpoolingaoraha.entidades.
SistemaCarPooling
;
import
com.carpooling.carpoolingaoraha.entidades.
*
;
import
com.carpooling.carpoolingaoraha.entidades.Usuario.*
;
import
com.carpooling.carpoolingaoraha.repositorios.ReservaRepository
;
import
com.carpooling.carpoolingaoraha.repositorios.UsuarioRepository
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment