Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
María Hidalgo
/
carpooling-dae
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
57bb271c
authored
Jan 11, 2024
by
María Hidalgo
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
añadida funcion obtenerViajesPendientesConductor
parent
d2b9e2cd
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
53 additions
and
7 deletions
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Usuario.java
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Viaje.java
src/main/java/es/ujaen/dae/carpoolingdae/excepciones/ViajeRealizado.java
src/main/java/es/ujaen/dae/carpoolingdae/servicios/SistemaCarpooling.java
src/test/java/es/ujaen/dae/carpoolingdae/entidades/UsuarioTest.java
src/test/java/es/ujaen/dae/carpoolingdae/entidades/ViajeTest.java
src/test/java/es/ujaen/dae/carpoolingdae/servicios/SistemaCarpoolingTest.java
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Usuario.java
View file @
57bb271c
...
...
@@ -4,7 +4,6 @@ import java.io.Serializable;
import
java.time.LocalDate
;
import
java.util.ArrayList
;
import
jakarta.validation.constraints.Email
;
import
jakarta.validation.constraints.Past
;
import
jakarta.validation.constraints.Pattern
;
...
...
@@ -16,7 +15,9 @@ import jakarta.validation.constraints.NotNull;
import
java.util.List
;
import
es.ujaen.dae.carpoolingdae.entidades.Viaje.EstadoViaje
;
import
es.ujaen.dae.carpoolingdae.excepciones.NoAceptaConductor
;
import
es.ujaen.dae.carpoolingdae.excepciones.ViajeRealizado
;
import
es.ujaen.dae.carpoolingdae.utils.CodificadorMd5
;
import
es.ujaen.dae.carpoolingdae.utils.ExprReg
;
...
...
@@ -69,8 +70,8 @@ public class Usuario implements Serializable {
String
clave
;
// Viajes creados por el conductor
@OneToMany
(
fetch
=
FetchType
.
EAGER
,
cascade
=
CascadeType
.
ALL
)
//@JoinColumn(name = "usuario_dni")
@OneToMany
(
fetch
=
FetchType
.
EAGER
,
cascade
=
CascadeType
.
ALL
)
//
@JoinColumn(name = "usuario_dni")
List
<
Viaje
>
viajesComoConductor
;
public
Usuario
(
String
dni
,
String
nombre
,
String
apellidos
,
LocalDate
fecha_nac
,
String
telef
,
String
email
,
...
...
@@ -130,6 +131,10 @@ public class Usuario implements Serializable {
if
(!
viajesComoConductor
.
contains
(
viaje
))
{
throw
new
NoAceptaConductor
();
}
// Verifica si el viaje está en estado pendiente
if
(
viaje
.
getEstado
()
!=
EstadoViaje
.
PENDIENTE
)
{
throw
new
ViajeRealizado
();
}
// Llamar a la función en Viaje para confirmar al pasajero
viaje
.
confirmarPasajero
(
pasajero
,
conductor
);
...
...
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Viaje.java
View file @
57bb271c
...
...
@@ -8,6 +8,8 @@ import java.util.List;
import
es.ujaen.dae.carpoolingdae.excepciones.PlazaNoDisponible
;
import
jakarta.persistence.CascadeType
;
import
jakarta.persistence.Entity
;
import
jakarta.persistence.EnumType
;
import
jakarta.persistence.Enumerated
;
import
jakarta.persistence.GeneratedValue
;
import
jakarta.persistence.GenerationType
;
import
jakarta.persistence.Id
;
...
...
@@ -46,6 +48,15 @@ public class Viaje {
@NotNull
Double
precioAsiento
;
public
enum
EstadoViaje
{
PENDIENTE
,
REALIZADO
,
CANCELADO
}
// Añado el atributo de estado usando el enum
@Enumerated
(
EnumType
.
STRING
)
EstadoViaje
estado
;
// Lista de usuarios que son confirmados en un viaje
@ManyToMany
(
cascade
=
CascadeType
.
ALL
)
...
...
@@ -67,6 +78,7 @@ public class Viaje {
this
.
fechaHora
=
fechaHora
;
this
.
plazasDisponibles
=
plazasDisponibles
;
this
.
precioAsiento
=
precioAsiento
;
this
.
estado
=
EstadoViaje
.
PENDIENTE
;
usuariosSolicitantes
=
new
ArrayList
<>();
usuariosConfirmados
=
new
ArrayList
<>();
...
...
@@ -93,7 +105,7 @@ public class Viaje {
}
public
void
enviarSolicitudParaSerPasajero
(
@NotNull
Viaje
viaje
,
@NotNull
Usuario
pasajero
)
{
if
(!
usuariosSolicitantes
.
contains
(
pasajero
)
&&
getPlazasDisponibles
if
(
estado
==
EstadoViaje
.
PENDIENTE
&&
!
usuariosSolicitantes
.
contains
(
pasajero
)
&&
getPlazasDisponibles
()
>
0
)
{
// Sino quedan plazas no puede solicitar
// unirse
usuariosSolicitantes
.
add
(
pasajero
);
...
...
@@ -104,7 +116,7 @@ public class Viaje {
public
void
confirmarPasajero
(
@NotNull
Usuario
pasajero
,
@NotNull
Usuario
conductor
)
{
// Verificar si el pasajero está en la lista de solicitantes
if
(
usuariosSolicitantes
.
contains
(
pasajero
)
&&
plazasDisponibles
>
0
)
{
if
(
estado
==
EstadoViaje
.
PENDIENTE
&&
usuariosSolicitantes
.
contains
(
pasajero
)
&&
plazasDisponibles
>
0
)
{
// Mover al pasajero de la lista de solicitantes a la lista de confirmados
usuariosSolicitantes
.
remove
(
pasajero
);
...
...
src/main/java/es/ujaen/dae/carpoolingdae/excepciones/ViajeRealizado.java
0 → 100644
View file @
57bb271c
package
es
.
ujaen
.
dae
.
carpoolingdae
.
excepciones
;
public
class
ViajeRealizado
extends
RuntimeException
{
public
ViajeRealizado
()
{
}
}
src/main/java/es/ujaen/dae/carpoolingdae/servicios/SistemaCarpooling.java
View file @
57bb271c
...
...
@@ -7,7 +7,7 @@ import jakarta.validation.constraints.NotNull;
import
java.time.LocalDateTime
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -16,6 +16,7 @@ import org.springframework.validation.annotation.Validated;
import
es.ujaen.dae.carpoolingdae.entidades.Usuario
;
import
es.ujaen.dae.carpoolingdae.entidades.Viaje
;
import
es.ujaen.dae.carpoolingdae.entidades.Viaje.EstadoViaje
;
import
es.ujaen.dae.carpoolingdae.excepciones.UsuarioNoRegistrado
;
import
es.ujaen.dae.carpoolingdae.excepciones.UsuarioYaRegistrado
;
import
es.ujaen.dae.carpoolingdae.repositorios.RepositorioUsuarios
;
...
...
@@ -98,7 +99,18 @@ public class SistemaCarpooling {
return
listaViajes
;
}
/**
* Obtener viajes pendientes de un conductor
*
* @param conductor el usuario conductor
* @return lista de viajes pendientes del conductor
*/
public
List
<
Viaje
>
obtenerViajesPendientesConductor
(
@NotNull
Usuario
conductor
)
{
// Filtrar los viajes del conductor que aún no han sido realizados
return
conductor
.
getViajesComoConductor
().
stream
()
.
filter
(
viaje
->
viaje
.
getEstado
()
==
EstadoViaje
.
PENDIENTE
)
.
collect
(
Collectors
.
toList
());
}
/**
* Enviar solicitud para ser pasajero de un viaje
...
...
src/test/java/es/ujaen/dae/carpoolingdae/entidades/UsuarioTest.java
View file @
57bb271c
package
es
.
ujaen
.
dae
.
carpoolingdae
.
entidades
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertEquals
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertTrue
;
import
java.time.LocalDate
;
...
...
@@ -8,6 +9,7 @@ import java.time.LocalDateTime;
import
org.junit.jupiter.api.Test
;
import
es.ujaen.dae.carpoolingdae.entidades.Viaje.EstadoViaje
;
import
jakarta.validation.ConstraintViolation
;
import
jakarta.validation.Validation
;
import
jakarta.validation.Validator
;
...
...
@@ -76,6 +78,10 @@ public class UsuarioTest {
2
,
50.0
);
usuario
.
agregarViajeComoConductor
(
viaje
);
viaje
.
setEstado
(
EstadoViaje
.
PENDIENTE
);
assertTrue
(
usuario
.
viajesComoConductor
.
contains
(
viaje
));
assertEquals
(
EstadoViaje
.
PENDIENTE
,
viaje
.
getEstado
());
assertTrue
(
usuario
.
viajesComoConductor
.
contains
(
viaje
));
}
...
...
src/test/java/es/ujaen/dae/carpoolingdae/entidades/ViajeTest.java
View file @
57bb271c
package
es
.
ujaen
.
dae
.
carpoolingdae
.
entidades
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertEquals
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertFalse
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertThrows
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertTrue
;
...
...
@@ -14,6 +15,7 @@ import org.junit.jupiter.api.BeforeEach;
import
org.junit.jupiter.api.Test
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
es.ujaen.dae.carpoolingdae.entidades.Viaje.EstadoViaje
;
import
es.ujaen.dae.carpoolingdae.excepciones.PlazaNoDisponible
;
import
es.ujaen.dae.carpoolingdae.servicios.SistemaCarpooling
;
import
jakarta.validation.ConstraintViolation
;
...
...
@@ -124,12 +126,14 @@ public class ViajeTest {
"clave"
);
viaje
.
setPlazasDisponibles
(
0
);
viaje
.
usuariosSolicitantes
.
add
(
pasajero
);
viaje
.
setEstado
(
EstadoViaje
.
PENDIENTE
);
viaje
.
confirmarPasajero
(
pasajero
,
conductor
);
// Verificación
assertFalse
(
viaje
.
getPlazasDisponibles
()
>
0
);
assertFalse
(
viaje
.
usuariosConfirmados
.
contains
(
pasajero
));
assertFalse
(
viaje
.
usuariosSolicitantes
.
isEmpty
());
assertEquals
(
EstadoViaje
.
PENDIENTE
,
viaje
.
getEstado
());
}
...
...
src/test/java/es/ujaen/dae/carpoolingdae/servicios/SistemaCarpoolingTest.java
View file @
57bb271c
This diff is collapsed.
Click to expand it.
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