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
dd3f1821
authored
Nov 23, 2023
by
Álvaro Herrera Arjonilla
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Changes by Álvaro Ordoñez colabora en el anterior commit
parent
d5830780
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
76 additions
and
33 deletions
src/main/java/com/carpooling/carpoolingaoraha/entidades/Reserva.java
src/main/java/com/carpooling/carpoolingaoraha/entidades/Usuario.java
src/main/java/com/carpooling/carpoolingaoraha/repositorios/UsuarioRepository.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/Reserva.java
View file @
dd3f1821
...
...
@@ -43,7 +43,9 @@ public class Reserva {
@Transient
SistemaCarPooling
sistema
;
public
Reserva
(){}
public
Reserva
(){
this
.
pasajeros
=
new
ArrayList
<
String
>();
}
public
Reserva
(
Usuario
conductor
,
String
origen
,
String
destino
,
Date
fechaSalida
,
int
nAsientos
,
int
precioAsiento
)
{
this
.
conductor
=
conductor
;
this
.
idReserva
=
++
incrementaReserva
;
...
...
@@ -148,4 +150,6 @@ public class Reserva {
public
boolean
getReservaConcluida
(){
return
this
.
reservaConcluida
;}
public
void
setReservaConcluida
(
boolean
reservaConcluida
)
{
this
.
reservaConcluida
=
reservaConcluida
;
}
}
src/main/java/com/carpooling/carpoolingaoraha/entidades/Usuario.java
View file @
dd3f1821
...
...
@@ -56,7 +56,7 @@ public class Usuario {
private
String
claveAcceso
;
@Transient
private
ArrayList
<
Integer
>
puntuacion
;
private
ArrayList
<
Double
>
puntuacion
;
@NotNull
private
Rol
rol
;
...
...
@@ -157,11 +157,11 @@ public class Usuario {
this
.
claveAcceso
=
claveAcceso
;
}
public
ArrayList
<
Integer
>
getPuntuacion
()
{
public
ArrayList
<
Double
>
getPuntuacion
()
{
return
puntuacion
;
}
public
void
setPuntuacion
(
int
puntuacion
)
{
public
void
setPuntuacion
(
double
puntuacion
)
{
this
.
puntuacion
.
add
(
puntuacion
);
}
...
...
src/main/java/com/carpooling/carpoolingaoraha/repositorios/UsuarioRepository.java
View file @
dd3f1821
...
...
@@ -50,7 +50,7 @@ public class UsuarioRepository {
usuario
.
ofrecerViaje
(
viaje
.
getOrigen
(),
viaje
.
getDestino
(),
viaje
.
getFechaSalida
(),
viaje
.
getnAsientos
(),
viaje
.
getPrecioAsiento
());
}
public
void
actualizarPuntuacion
(
Usuario
usuario
,
int
nuevaPuntuacion
)
{
public
void
actualizarPuntuacion
(
Usuario
usuario
,
double
nuevaPuntuacion
)
{
// Carga el usuario desde la base de datos
Usuario
usuarioExistente
=
em
.
find
(
Usuario
.
class
,
usuario
.
getDNI
());
...
...
@@ -59,8 +59,8 @@ public class UsuarioRepository {
usuarioExistente
.
getPuntuacion
().
add
(
nuevaPuntuacion
);
// Calcula la puntuación media
List
<
Integer
>
puntuaciones
=
usuarioExistente
.
getPuntuacion
();
double
puntuacionMedia
=
puntuaciones
.
stream
().
mapToInt
(
Integer
:
:
intValue
).
average
().
orElse
(
0.0
);
List
<
Double
>
puntuaciones
=
usuarioExistente
.
getPuntuacion
();
double
puntuacionMedia
=
puntuaciones
.
stream
().
mapToInt
(
Double
:
:
intValue
).
average
().
orElse
(
0.0
);
usuarioExistente
.
setPuntuacionMedia
(
puntuacionMedia
);
// Guarda el usuario actualizado (sin duplicar)
...
...
@@ -73,6 +73,14 @@ public class UsuarioRepository {
em
.
merge
(
u
);
}
@CacheEvict
(
value
=
"usuarios"
,
key
=
"#DNI"
)
public
void
eliminarUsuarioPorDNI
(
String
DNI
)
{
Usuario
usuario
=
em
.
find
(
Usuario
.
class
,
DNI
);
if
(
usuario
!=
null
)
{
em
.
remove
(
usuario
);
}
}
...
...
src/main/java/com/carpooling/carpoolingaoraha/services/ServicioCarPooling.java
View file @
dd3f1821
...
...
@@ -47,7 +47,7 @@ public class ServicioCarPooling {
//AltaViaje???
//Cacheable
@Transactional
public
Usuario
altaCliente
(
@NotNull
@Valid
Usuario
usuario
)
{
Optional
<
Usuario
>
test
=
repositorioUsuario
.
buscar
(
usuario
.
getDNI
());
if
(
test
.
isPresent
())
{
...
...
@@ -57,7 +57,7 @@ public class ServicioCarPooling {
return
usuario
;
}
@Transactional
public
Usuario
modificarDatosUsuario
(
@NotNull
@Valid
Usuario
usuarioModificado
)
{
// Buscar el usuario existente por su DNI
Optional
<
Usuario
>
usuarioExistente
=
repositorioUsuario
.
buscar
(
usuarioModificado
.
getDNI
());
...
...
@@ -82,7 +82,7 @@ public class ServicioCarPooling {
throw
new
UsuarioNoRegistrado
();
}
}
@Transactional
public
Viaje
modificarDatosViaje
(
@NotNull
@Valid
Viaje
viajeModificado
)
{
// Buscar el viaje existente por su ID
Optional
<
Viaje
>
viajeExistente
=
repositorioViajes
.
buscar
(
viajeModificado
.
getIdViaje
());
...
...
@@ -107,9 +107,7 @@ public class ServicioCarPooling {
throw
new
ViajeNoRegistrado
();
}
}
@Transactional
public
Viaje
altaViaje
(
@NotNull
@Valid
Viaje
v
)
{
Optional
<
Viaje
>
test
=
repositorioViajes
.
buscar
(
v
.
getIdViaje
());
if
(
test
.
isPresent
())
{
...
...
@@ -161,27 +159,45 @@ public class ServicioCarPooling {
}
@Transactional
public
void
actualizarPuntuacionUsuario
(
@NotBlank
String
dni
,
int
nuevaPuntuacion
)
{
public
Usuario
actualizarPuntuacionUsuario
(
@NotBlank
String
dni
,
double
nuevaPuntuacion
)
{
Optional
<
Usuario
>
usuarioExistente
=
repositorioUsuario
.
buscar
(
dni
);
Usuario
usuario
;
if
(
usuarioExistente
.
isPresent
())
{
Usuario
usuario
=
usuarioExistente
.
get
();
usuario
=
usuarioExistente
.
get
();
repositorioUsuario
.
actualizarPuntuacion
(
usuario
,
nuevaPuntuacion
);
}
else
{
throw
new
UsuarioNoRegistrado
();
// O maneja la situación de otra manera según tus necesidades
throw
new
UsuarioNoRegistrado
();
}
return
usuario
;
}
/**
@Transactional
public List<Reserva> verReserva (@NotBlank String idReserva) {
Reserva r = repositorioReservas.buscar(idReserva).orElseThrow(ReservaNoRegistrada::new);
public
boolean
unirseAReserva
(
String
dniUsuario
,
int
idReserva
)
{
Usuario
usuario
=
repositorioUsuario
.
buscar
(
dniUsuario
).
orElseThrow
(
UsuarioNoRegistrado:
:
new
);
// Precargar a memoria la relación lazy de cuentas del cliente antes de devolver
//cliente.verCuentas().size();
return r.;
Reserva
reserva
=
repositorioReservas
.
buscar
(
idReserva
).
orElseThrow
(
ReservaNoRegistrada:
:
new
);
if
(
usuario
.
getRol
()
==
Usuario
.
Rol
.
PASAJERO
||
usuario
.
getRol
()
==
Usuario
.
Rol
.
AMBOS
)
{
reserva
.
addPasajero
(
usuario
.
getDNI
());
repositorioReservas
.
actualizar
(
reserva
);
return
true
;
}
else
{
throw
new
RuntimeException
(
"El usuario no tiene el rol adecuado para unirse a la reserva."
);
}
}
*/
@Transactional
public
void
darseDeBaja
(
String
DNI
)
{
repositorioUsuario
.
eliminarUsuarioPorDNI
(
DNI
);
}
@Transactional
public
List
<
Viaje
>
listarViajes
()
{
List
<
Viaje
>
viajes
=
repositorioViajes
.
obtenerTodosLosViajes
();
if
(
viajes
==
null
)
throw
new
ViajeNoRegistrado
();
return
viajes
;
}
}
src/test/java/com/carpooling/carpoolingaoraha/services/ServicioCarPoolingTest.java
View file @
dd3f1821
...
...
@@ -19,6 +19,7 @@ import java.util.Optional;
import
java.util.Random
;
import
static
org
.
junit
.
Assert
.*;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertDoesNotThrow
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertTrue
;
...
...
@@ -222,20 +223,34 @@ public class ServicioCarPoolingTest
}
@Test
public
void
testActualizarPuntuacionUsuario
()
{
public
void
testActualizarPuntuacionUsuario
()
throws
ParseException
{
// Datos de prueba
String
dni
=
"123456789"
;
int
nuevaPuntuacion
=
5
;
int
length
=
9
;
String
characters
=
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
;
// Crear un usuario existente
Usuario
usuarioExistente
=
new
Usuario
();
usuarioExistente
.
setDNI
(
dni
);
// Inicializar el generador de números aleatorios
Random
random
=
new
Random
();
// Ejecutar el método que se va a probar
servicio
.
actualizarPuntuacionUsuario
(
dni
,
nuevaPuntuacion
);
StringBuilder
sb
=
new
StringBuilder
(
length
);
// Generar la cadena aleatoria
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
int
randomIndex
=
random
.
nextInt
(
characters
.
length
());
char
randomChar
=
characters
.
charAt
(
randomIndex
);
sb
.
append
(
randomChar
);
}
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
SistemaCarPooling
sis
=
new
SistemaCarPooling
();
java
.
util
.
Date
yourDate
=
sdf
.
parse
(
"1992-07-26"
);
Usuario
usuario
=
new
Usuario
(
"Perico"
,
"Alonso"
,
yourDate
,
sb
.
toString
(),
670988953
,
"aor00039@red.ujaen.es"
,
"hola"
,
Rol
.
PASAJERO
,
sis
);
Usuario
usuarioGuardado
=
servicio
.
altaCliente
(
usuario
);
String
dni
=
sb
.
toString
();
double
nuevaPuntuacion
=
5
;
// Ejecutar el método que se va a probar
Usuario
usuarioExistente
=
servicio
.
actualizarPuntuacionUsuario
(
dni
,
nuevaPuntuacion
);
// Verificar que la puntuación se actualizó correctamente
assertEquals
(
Optional
.
of
(
nuevaPuntuacion
),
usuarioExistente
.
getPuntuacion
().
get
(
0
));
assertEquals
(
usuarioExistente
.
getPuntuacion
(),
usuarioExistente
.
getPuntuacion
(
));
assertEquals
(
1
,
usuarioExistente
.
getPuntuacion
().
size
());
}
...
...
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