Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Antonio Rueda
/
reserva-hoteles
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
fe1cb857
authored
Oct 02, 2024
by
Antonio Rueda
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Validación a nivel de servicio
parent
572f736c
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
9 deletions
src/main/java/es/ujaen/dae/reservahoteles/servicios/ServicioReservas.java
src/main/java/es/ujaen/dae/reservahoteles/servicios/ServicioReservas.java
View file @
fe1cb857
...
@@ -6,19 +6,26 @@ import es.ujaen.dae.reservahoteles.entidades.Hotel;
...
@@ -6,19 +6,26 @@ import es.ujaen.dae.reservahoteles.entidades.Hotel;
import
es.ujaen.dae.reservahoteles.entidades.Reserva
;
import
es.ujaen.dae.reservahoteles.entidades.Reserva
;
import
es.ujaen.dae.reservahoteles.excepciones.ClienteYaRegistrado
;
import
es.ujaen.dae.reservahoteles.excepciones.ClienteYaRegistrado
;
import
es.ujaen.dae.reservahoteles.util.UtilString
;
import
es.ujaen.dae.reservahoteles.util.UtilString
;
import
jakarta.validation.Valid
;
import
jakarta.validation.constraints.Email
;
import
jakarta.validation.constraints.Future
;
import
jakarta.validation.constraints.FutureOrPresent
;
import
jakarta.validation.constraints.NotBlank
;
import
jakarta.validation.constraints.PositiveOrZero
;
import
java.time.LocalDate
;
import
java.time.LocalDate
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.Optional
;
import
java.util.TreeMap
;
import
java.util.TreeMap
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.validation.annotation.Validated
;
/**
/**
*
*
* @author ajrueda
* @author ajrueda
*/
*/
@Service
@Service
@Validated
public
class
ServicioReservas
{
public
class
ServicioReservas
{
Map
<
Integer
,
Hotel
>
hoteles
;
Map
<
Integer
,
Hotel
>
hoteles
;
Map
<
String
,
Cliente
>
clientes
;
Map
<
String
,
Cliente
>
clientes
;
...
@@ -28,18 +35,18 @@ public class ServicioReservas {
...
@@ -28,18 +35,18 @@ public class ServicioReservas {
clientes
=
new
TreeMap
<>();
clientes
=
new
TreeMap
<>();
}
}
public
void
nuevoHotel
(
Hotel
hotel
)
{
public
void
nuevoHotel
(
@Valid
Hotel
hotel
)
{
hoteles
.
put
(
hotel
.
id
(),
hotel
);
hoteles
.
put
(
hotel
.
id
(),
hotel
);
}
}
public
void
nuevoCliente
(
Cliente
cliente
)
{
public
void
nuevoCliente
(
@Valid
Cliente
cliente
)
{
if
(
clientes
.
containsKey
(
cliente
.
email
()))
if
(
clientes
.
containsKey
(
cliente
.
email
()))
throw
new
ClienteYaRegistrado
();
throw
new
ClienteYaRegistrado
();
clientes
.
put
(
cliente
.
email
(),
cliente
);
clientes
.
put
(
cliente
.
email
(),
cliente
);
}
}
public
Optional
<
Cliente
>
login
(
String
email
,
String
clave
)
{
public
Optional
<
Cliente
>
login
(
@Email
String
email
,
String
clave
)
{
// Equivalente al código de abajo pero más seguro y compacto
// Equivalente al código de abajo pero más seguro y compacto
// return Optional.ofNullable(clientes.get(email))
// return Optional.ofNullable(clientes.get(email))
// .filter(cliente -> cliente.clave().equals(clave));
// .filter(cliente -> cliente.clave().equals(clave));
...
@@ -57,9 +64,9 @@ public class ServicioReservas {
...
@@ -57,9 +64,9 @@ public class ServicioReservas {
* @param numHabDoble número de habitaciones dobles solicitadas
* @param numHabDoble número de habitaciones dobles solicitadas
* @return la lista de hoteles candidatos
* @return la lista de hoteles candidatos
*/
*/
public
List
<
Hotel
>
buscarHotelesDisponiblesPorLocalidad
(
String
localidad
,
public
List
<
Hotel
>
buscarHotelesDisponiblesPorLocalidad
(
@NotBlank
String
localidad
,
LocalDate
fechaInicio
,
LocalDate
fechaFin
,
@FutureOrPresent
LocalDate
fechaInicio
,
@Future
LocalDate
fechaFin
,
int
numHabSimple
,
int
numHabDoble
)
{
@PositiveOrZero
int
numHabSimple
,
@PositiveOrZero
int
numHabDoble
)
{
var
localidadNorm
=
UtilString
.
normalizar
(
localidad
);
var
localidadNorm
=
UtilString
.
normalizar
(
localidad
);
return
hoteles
.
values
().
stream
().
filter
(
h
->
return
hoteles
.
values
().
stream
().
filter
(
h
->
...
@@ -75,7 +82,7 @@ public class ServicioReservas {
...
@@ -75,7 +82,7 @@ public class ServicioReservas {
* @param localidad el nombre total o parcial de la localidad
* @param localidad el nombre total o parcial de la localidad
* @return la lista de hoteles candidatos
* @return la lista de hoteles candidatos
*/
*/
public
List
<
Hotel
>
buscarHotel
(
String
nombre
,
String
localidad
)
{
public
List
<
Hotel
>
buscarHotel
(
@NotBlank
String
nombre
,
@NotBlank
String
localidad
)
{
var
nombreNorm
=
UtilString
.
normalizar
(
nombre
);
var
nombreNorm
=
UtilString
.
normalizar
(
nombre
);
var
localidadNorm
=
UtilString
.
normalizar
(
localidad
);
var
localidadNorm
=
UtilString
.
normalizar
(
localidad
);
...
@@ -93,7 +100,11 @@ public class ServicioReservas {
...
@@ -93,7 +100,11 @@ public class ServicioReservas {
* @param numHabDoble número de habitaciones dobles solicitadas
* @param numHabDoble número de habitaciones dobles solicitadas
* @return true si hay disponibilidad, false en caso contrario
* @return true si hay disponibilidad, false en caso contrario
*/
*/
public
boolean
disponible
(
Hotel
h
,
LocalDate
fechaInicio
,
LocalDate
fechaFin
,
int
numHabSimple
,
int
numHabDoble
)
{
public
boolean
disponible
(
Hotel
h
,
@FutureOrPresent
LocalDate
fechaInicio
,
@FutureOrPresent
LocalDate
fechaFin
,
@PositiveOrZero
int
numHabSimple
,
@PositiveOrZero
int
numHabDoble
)
{
return
h
.
disponible
(
fechaInicio
,
fechaFin
,
numHabSimple
,
numHabDoble
);
return
h
.
disponible
(
fechaInicio
,
fechaFin
,
numHabSimple
,
numHabDoble
);
}
}
...
...
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