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
2a04addb
authored
Jan 24, 2024
by
María Hidalgo
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
work in progress
parent
60873755
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
23 additions
and
13 deletions
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Viaje.java
src/main/java/es/ujaen/dae/carpoolingdae/repositorios/RepositorioViajes.java
src/main/java/es/ujaen/dae/carpoolingdae/servicios/SistemaCarpooling.java
src/test/java/es/ujaen/dae/carpoolingdae/servicios/SistemaCarpoolingTest.java
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Viaje.java
View file @
2a04addb
...
...
@@ -10,12 +10,12 @@ import jakarta.persistence.CascadeType;
import
jakarta.persistence.Entity
;
import
jakarta.persistence.EnumType
;
import
jakarta.persistence.Enumerated
;
import
jakarta.persistence.FetchType
;
import
jakarta.persistence.GeneratedValue
;
import
jakarta.persistence.GenerationType
;
import
jakarta.persistence.Id
;
import
jakarta.persistence.JoinColumn
;
import
jakarta.persistence.ManyToMany
;
import
jakarta.transaction.Transactional
;
import
jakarta.validation.constraints.Past
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
...
...
@@ -26,6 +26,8 @@ import jakarta.validation.constraints.NotNull;
@Data
@NoArgsConstructor
@Entity
public
class
Viaje
{
@Id
...
...
@@ -59,12 +61,12 @@ public class Viaje {
EstadoViaje
estado
;
// Lista de usuarios que son confirmados en un viaje
@ManyToMany
(
cascade
=
CascadeType
.
ALL
)
@ManyToMany
(
cascade
=
CascadeType
.
ALL
,
fetch
=
FetchType
.
EAGER
)
@JoinColumn
(
name
=
"confirmado_usuario_dni"
)
public
List
<
Usuario
>
usuariosConfirmados
;
// Lista de usuarios que solicitan unirse a un viaje
@ManyToMany
(
cascade
=
CascadeType
.
ALL
)
@ManyToMany
(
cascade
=
CascadeType
.
ALL
,
fetch
=
FetchType
.
EAGER
)
@JoinColumn
(
name
=
"solicitante_usuario_dni"
)
public
List
<
Usuario
>
usuariosSolicitantes
;
...
...
@@ -103,7 +105,8 @@ public class Viaje {
public
void
setPlazasDisponibles
(
int
plazasDisponibles
)
{
this
.
plazasDisponibles
=
plazasDisponibles
;
}
@Transactional
public
void
enviarSolicitudParaSerPasajero
(
@NotNull
Viaje
viaje
,
@NotNull
Usuario
pasajero
)
{
if
(
estado
==
EstadoViaje
.
PENDIENTE
&&
!
usuariosSolicitantes
.
contains
(
pasajero
)
&&
getPlazasDisponibles
()
>
0
)
{
// Sino quedan plazas no puede solicitar
...
...
@@ -114,7 +117,7 @@ public class Viaje {
}
}
@Transactional
public
void
confirmarPasajero
(
@NotNull
Usuario
pasajero
,
@NotNull
Usuario
conductor
)
{
// Verificar si el pasajero está en la lista de solicitantes
if
(
estado
==
EstadoViaje
.
PENDIENTE
&&
usuariosSolicitantes
.
contains
(
pasajero
)
&&
plazasDisponibles
>
0
)
{
...
...
src/main/java/es/ujaen/dae/carpoolingdae/repositorios/RepositorioViajes.java
View file @
2a04addb
...
...
@@ -36,7 +36,7 @@ public class RepositorioViajes {
}
public
List
<
Viaje
>
buscar
Viajes
(
String
origen
,
String
destino
,
LocalDateTime
fecha
)
{
public
List
<
Viaje
>
buscar
(
String
origen
,
String
destino
,
LocalDateTime
fecha
)
{
List
<
Viaje
>
viajes
=
new
ArrayList
<>();
// try {
Query
q
=
em
.
createQuery
(
"SELECT v FROM Viaje v WHERE v.origen = ?1 AND v.destino = ?2 "
);
...
...
src/main/java/es/ujaen/dae/carpoolingdae/servicios/SistemaCarpooling.java
View file @
2a04addb
package
es
.
ujaen
.
dae
.
carpoolingdae
.
servicios
;
import
jakarta.transaction.Transactional
;
import
jakarta.validation.Valid
;
import
jakarta.validation.constraints.NotBlank
;
import
jakarta.validation.constraints.NotNull
;
...
...
@@ -27,6 +26,7 @@ import es.ujaen.dae.carpoolingdae.repositorios.RepositorioViajes;
@Service
@Validated
public
class
SistemaCarpooling
{
@Autowired
...
...
@@ -45,6 +45,7 @@ public class SistemaCarpooling {
* @param usuario el usuario a dar de alta
*/
public
Usuario
altaUsuario
(
@NotNull
@Valid
Usuario
usuario
)
throws
UsuarioNoRegistrado
{
if
(
repositorioUsuarios
.
buscar
(
usuario
.
getDni
()).
isPresent
()){
...
...
@@ -95,9 +96,10 @@ public class SistemaCarpooling {
* @return viajes encontrados con esos datos
*/
public
List
<
Viaje
>
buscarViajes
(
@NotBlank
String
origen
,
@NotBlank
String
destino
,
@NotNull
LocalDateTime
fecha
)
{
List
<
Viaje
>
listaViajes
=
repositorioViajes
.
buscar
Viajes
(
origen
,
destino
,
fecha
);
List
<
Viaje
>
listaViajes
=
repositorioViajes
.
buscar
(
origen
,
destino
,
fecha
);
return
listaViajes
;
...
...
@@ -108,6 +110,7 @@ public class SistemaCarpooling {
* @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
()
...
...
@@ -122,14 +125,14 @@ public class SistemaCarpooling {
* @param viaje al que se envía la solicitud
*/
@Transactional
public
void
enviarSolicitudViaje
(
@NotNull
Viaje
viaje
,
@NotNull
Usuario
pasajero
)
{
// Llamar a la función en viaje para enviar la solicitud
viaje
.
enviarSolicitudParaSerPasajero
(
viaje
,
pasajero
);
repositorioViajes
.
actualizarViajes
(
viaje
);
}
public
void
aceptarPasajeroViaje
(
@NotNull
Viaje
viaje
,
@NotNull
Usuario
pasajero
,
@NotNull
Usuario
conductor
)
{
...
...
@@ -144,6 +147,7 @@ public class SistemaCarpooling {
* @return lista de solicitudes pendientes del viaje
*/
public
List
<
Usuario
>
obtenerSolicitudesPendientes
(
@NotNull
Viaje
viaje
)
{
// Verificar que el viaje esté en estado PENDIENTE
if
(
viaje
.
getEstado
()
!=
EstadoViaje
.
PENDIENTE
)
{
...
...
@@ -160,7 +164,7 @@ public class SistemaCarpooling {
* @param viaje el viaje del que se obtendrán los pasajeros
* @return lista de pasajeros confirmados del viaje
*/
public
List
<
Usuario
>
obtenerPasajeros
(
@NotNull
Viaje
viaje
)
{
//Podemos ver los pasajeros antes y después del viaje
if
(
viaje
.
getEstado
()
!=
EstadoViaje
.
PENDIENTE
&&
viaje
.
getEstado
()
!=
EstadoViaje
.
REALIZADO
)
{
...
...
src/test/java/es/ujaen/dae/carpoolingdae/servicios/SistemaCarpoolingTest.java
View file @
2a04addb
...
...
@@ -181,17 +181,20 @@ public class SistemaCarpoolingTest {
Assertions
.
assertThat
(
viajeEnc
.
getPrecioAsiento
()).
isEqualTo
(
viaje
.
getPrecioAsiento
());
Optional
<
Usuario
>
pasajeroLogin
=
sistemaCarpooling
.
loginUsuario
(
pasajero
.
getDni
(),
"clave"
);
// Optional <Usuario> pasajeroLogin = sistemaCarpooling.loginUsuario(pasajero.getDni(), "clave");
viajeEnc
.
setEstado
(
EstadoViaje
.
PENDIENTE
);
sistemaCarpooling
.
enviarSolicitudViaje
(
viajeEnc
,
pasajeroLogin
.
get
());
// Obtener solicitudes pendientes del viaje
List
<
Usuario
>
solicitudesPendientes
=
sistemaCarpooling
.
obtenerSolicitudesPendientes
(
viajeEnc
);
// Comprobar que el pasajero está en la lista de solicitudes pendientes
assertTrue
(
solicitudesPendientes
.
contains
(
pasajeroLogin
.
get
()));
assertEquals
(
EstadoViaje
.
PENDIENTE
,
viaje
.
getEstado
());
}
//@Transactional
@Test
public
void
testAceptarPasajeroViaje
()
{
// Crear un usuario conductor sistemaCarpooling.enviarSolicitudViaje(viajeEnc, pasajeroLogin.get());
...
...
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