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
37574181
authored
Nov 28, 2024
by
Antonio Rueda
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Implementado endpoint para búsqueda de hoteles por varios criterios
parent
a0d63266
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
40 additions
and
9 deletions
src/main/java/es/ujaen/dae/reservahoteles/rest/ControladorReservas.java
src/main/java/es/ujaen/dae/reservahoteles/servicios/ServicioReservas.java
src/test/java/es/ujaen/dae/reservahoteles/rest/TestControladorReservas.java
src/main/java/es/ujaen/dae/reservahoteles/rest/ControladorReservas.java
View file @
37574181
package
es
.
ujaen
.
dae
.
reservahoteles
.
rest
;
import
es.ujaen.dae.reservahoteles.entidades.Hotel
;
import
es.ujaen.dae.reservahoteles.entidades.Usuario
;
import
es.ujaen.dae.reservahoteles.excepciones.UsuarioNoRegistrado
;
import
es.ujaen.dae.reservahoteles.excepciones.UsuarioYaRegistrado
;
...
...
@@ -10,6 +11,9 @@ import es.ujaen.dae.reservahoteles.rest.dto.Mapeador;
import
es.ujaen.dae.reservahoteles.servicios.ServicioReservas
;
import
jakarta.annotation.PostConstruct
;
import
jakarta.validation.ConstraintViolationException
;
import
java.time.LocalDate
;
import
java.util.List
;
import
java.util.Optional
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
...
...
@@ -76,5 +80,30 @@ public class ControladorReservas {
servicioReservas
.
nuevoHotel
(
direccion
,
mapeador
.
entidad
(
hotel
));
return
ResponseEntity
.
status
(
HttpStatus
.
CREATED
).
build
();
}
}
@GetMapping
(
"/hoteles"
)
public
ResponseEntity
<
List
<
DHotel
>>
buscarHotel
(
@RequestParam
String
localidad
,
@RequestParam
(
required
=
false
)
String
nombre
,
@RequestParam
(
required
=
false
)
LocalDate
desde
,
@RequestParam
(
required
=
false
)
LocalDate
hasta
,
@RequestParam
(
defaultValue
=
"0"
)
int
numHabSimple
,
@RequestParam
(
defaultValue
=
"0"
)
int
numHabDoble
)
{
// Definir fechas límite en caso de omisión
final
var
desdeFinal
=
desde
!=
null
?
desde
:
LocalDate
.
now
();
final
var
hastaFinal
=
hasta
!=
null
?
hasta
:
LocalDate
.
MAX
;
List
<
Hotel
>
hoteles
;
if
(
nombre
!=
null
)
{
hoteles
=
servicioReservas
.
buscarHotel
(
nombre
,
localidad
).
stream
()
.
filter
(
h
->
servicioReservas
.
disponible
(
h
,
desdeFinal
,
hastaFinal
,
numHabSimple
,
numHabDoble
)).
toList
();
}
else
{
hoteles
=
servicioReservas
.
buscarHotelesDisponiblesPorLocalidad
(
localidad
,
desdeFinal
,
hastaFinal
,
numHabSimple
,
numHabDoble
);
}
return
ResponseEntity
.
ok
(
hoteles
.
stream
().
map
(
h
->
mapeador
.
dto
(
h
)).
toList
());
}
}
src/main/java/es/ujaen/dae/reservahoteles/servicios/ServicioReservas.java
View file @
37574181
...
...
@@ -100,7 +100,6 @@ public class ServicioReservas {
* @param localidad el nombre total o parcial de la localidad
* @return la lista de hoteles candidatos (sin lista de reservas)
*/
@Transactional
public
List
<
Hotel
>
buscarHotel
(
@NotBlank
String
nombre
,
@NotBlank
String
localidad
)
{
return
repositorioHoteles
.
buscarPorNombreLocalidad
(
nombre
,
localidad
);
}
...
...
src/test/java/es/ujaen/dae/reservahoteles/rest/TestControladorReservas.java
View file @
37574181
package
es
.
ujaen
.
dae
.
reservahoteles
.
rest
;
import
es.ujaen.dae.reservahoteles.entidades.Hotel
;
import
es.ujaen.dae.reservahoteles.rest.dto.DHotel
;
import
es.ujaen.dae.reservahoteles.rest.dto.DUsuario
;
import
jakarta.annotation.PostConstruct
;
import
java.util.List
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.boot.test.context.SpringBootTest
;
...
...
@@ -106,7 +104,7 @@ public class TestControladorReservas {
);
assertThat
(
respuestaLogin
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
assertThat
(
respuestaLogin
.
getBody
()
).
isEqualTo
(
usuario
);
assertThat
(
respuestaLogin
.
getBody
()
.
email
()).
isEqualTo
(
usuario
.
email
()
);
}
@Test
...
...
@@ -137,9 +135,14 @@ public class TestControladorReservas {
);
assertThat
(
respuesta
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
CREATED
);
// List<Hotel> hoteles = servicio.buscarHotel("gran hotel", " almeria");
// assertThat(hoteles).hasSize(1);
// assertThat(hoteles.get(0).id()).isEqualTo(1);
var
respuestaConsulta
=
restTemplate
.
getForEntity
(
"/hoteles?nombre={nombre}&localidad={localidad}"
,
DHotel
[].
class
,
"gran hotel"
,
" almeria"
);
assertThat
(
respuestaConsulta
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
assertThat
(
respuestaConsulta
.
getBody
()).
hasSize
(
1
);
assertThat
(
respuestaConsulta
.
getBody
()[
0
].
id
()).
isEqualTo
(
1
);
}
}
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