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
e7a2c180
authored
Nov 08, 2023
by
Álvaro Herrera Arjonilla
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Modifico la clase usuario para que la puntuacion sea actualizable con cada nueva Reserva
parent
7450594b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
39 additions
and
28 deletions
src/main/java/com/carpooling/carpoolingaoraha/entidades/Usuario.java
src/main/java/com/carpooling/carpoolingaoraha/repositorios/UsuarioRepository.java
src/main/java/com/carpooling/carpoolingaoraha/entidades/Usuario.java
View file @
e7a2c180
...
...
@@ -24,10 +24,12 @@ public class Usuario {
private
int
telefono
;
private
String
email
;
private
String
claveAcceso
;
@Transient
private
ArrayList
<
Integer
>
puntuacion
;
private
Rol
rol
;
@Transient
private
ArrayList
<
Integer
>
viajesOfertados
;
double
puntuacionMedia
;
public
Usuario
()
{
}
...
...
@@ -49,6 +51,7 @@ public class Usuario {
this
.
viajesOfertados
=
null
;
}
this
.
sistemaCarPooling
=
new
SistemaCarPooling
();
puntuacionMedia
=
0
;
}
public
String
getNombre
()
{
...
...
@@ -107,12 +110,12 @@ public class Usuario {
this
.
claveAcceso
=
claveAcceso
;
}
public
int
getPuntuacion
()
{
public
ArrayList
<
Integer
>
getPuntuacion
()
{
return
puntuacion
;
}
public
void
setPuntuacion
(
int
puntuacion
)
{
this
.
puntuacion
+=
puntuacion
;
this
.
puntuacion
.
add
(
puntuacion
)
;
}
public
Rol
getRol
()
{
...
...
@@ -123,6 +126,18 @@ public class Usuario {
this
.
rol
=
rol
;
}
public
double
getPuntuacionMedia
()
{
for
(
int
i
=
0
;
i
<
getPuntuacion
().
size
();
i
++)
{
puntuacionMedia
+=
getPuntuacion
().
get
(
i
);
}
puntuacionMedia
=
puntuacionMedia
/
getPuntuacion
().
size
();
return
puntuacionMedia
;
}
public
void
setPuntuacionMedia
(
double
puntuacionMedia
)
{
this
.
puntuacionMedia
=
puntuacionMedia
;
}
public
void
cambiarRol
(){
if
(
this
.
rol
==
CONDUCTOR
){
rol
=
PASAJERO
;
...
...
@@ -165,10 +180,6 @@ public class Usuario {
return
false
;
}
public
double
puntuacionMedia
(){
return
this
.
puntuacion
/
viajesOfertados
.
size
();
}
public
List
<
Viaje
>
buscarViaje
(
String
origen
,
String
destino
,
Date
fecha
,
Rol
rol
,
List
<
Viaje
>
todosLosViajes
)
{
List
<
Viaje
>
viajesDisponibles
=
new
ArrayList
<>();
...
...
@@ -193,42 +204,25 @@ public class Usuario {
Collections
.
sort
(
viajesDisponibles
,
new
Comparator
<
Viaje
>()
{
@Override
public
int
compare
(
Viaje
viaje1
,
Viaje
viaje2
)
{
int
puntuacionConductor1
=
0
;
int
puntuacionConductor2
=
0
;
double
puntuacionConductor1
=
0
;
double
puntuacionConductor2
=
0
;
for
(
Reserva
reserva
:
reservasAsociadas
)
{
if
(
reserva
.
getViaje
().
equals
(
viaje1
))
{
puntuacionConductor1
=
Math
.
max
(
puntuacionConductor1
,
reserva
.
getConductor
().
getPuntuacion
());
puntuacionConductor1
=
Math
.
max
(
puntuacionConductor1
,
reserva
.
getConductor
().
getPuntuacion
Media
());
}
if
(
reserva
.
getViaje
().
equals
(
viaje2
))
{
puntuacionConductor2
=
Math
.
max
(
puntuacionConductor2
,
reserva
.
getConductor
().
getPuntuacion
());
puntuacionConductor2
=
Math
.
max
(
puntuacionConductor2
,
reserva
.
getConductor
().
getPuntuacion
Media
());
}
}
// Ordenar en orden descendente
return
Integer
.
compare
(
puntuacionConductor2
,
puntuacionConductor1
);
return
Double
.
compare
(
puntuacionConductor2
,
puntuacionConductor1
);
}
});
return
viajesDisponibles
;
}
public
void
actualizarPuntuacion
(
Usuario
usuario
,
int
nuevaPuntuacion
)
{
// Carga el usuario desde la base de datos
Usuario
usuarioExistente
=
usuarioRepository
.
findById
(
usuario
.
getId
()).
orElse
(
null
);
if
(
usuarioExistente
!=
null
)
{
// Agrega la nueva puntuación
usuarioExistente
.
getPuntuaciones
().
add
(
nuevaPuntuacion
);
// Calcula la puntuación media
List
<
Integer
>
puntuaciones
=
usuarioExistente
.
getPuntuaciones
();
double
puntuacionMedia
=
puntuaciones
.
stream
().
mapToInt
(
Integer:
:
intValue
).
average
().
orElse
(
0.0
);
usuarioExistente
.
setPuntuacionMedia
(
puntuacionMedia
);
// Guarda el usuario actualizado (sin duplicar)
usuarioRepository
.
save
(
usuarioExistente
);
}
}
}
src/main/java/com/carpooling/carpoolingaoraha/repositorios/UsuarioRepository.java
View file @
e7a2c180
...
...
@@ -4,11 +4,28 @@ import com.carpooling.carpoolingaoraha.entidades.Usuario;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
java.util.List
;
import
java.util.function.Function
;
public
interface
UsuarioRepository
extends
JpaRepository
<
Usuario
,
String
>
{
Usuario
findByDNI
(
String
dni
);
void
deleteByDNI
(
String
dni
);
public
default
void
actualizarPuntuacion
(
Usuario
usuario
,
int
nuevaPuntuacion
)
{
// Carga el usuario desde la base de datos
Usuario
usuarioExistente
=
findById
(
usuario
.
getDNI
()).
orElse
(
null
);
if
(
usuarioExistente
!=
null
)
{
// Agrega la nueva puntuación
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
);
usuarioExistente
.
setPuntuacionMedia
(
puntuacionMedia
);
// Guarda el usuario actualizado (sin duplicar)
save
(
usuarioExistente
);
}
}
}
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