Commit 18f91a18 by Antonio Rueda

Operaciones específicas en mapeador para creación de nuevas entidades

incluyendo codificación de claves de usuarios
parent 37574181
...@@ -13,7 +13,6 @@ import jakarta.annotation.PostConstruct; ...@@ -13,7 +13,6 @@ import jakarta.annotation.PostConstruct;
import jakarta.validation.ConstraintViolationException; import jakarta.validation.ConstraintViolationException;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List; import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
...@@ -55,7 +54,7 @@ public class ControladorReservas { ...@@ -55,7 +54,7 @@ public class ControladorReservas {
@PostMapping("/usuarios") @PostMapping("/usuarios")
public ResponseEntity<Void> nuevoCliente(@RequestBody DUsuario usuario) { public ResponseEntity<Void> nuevoCliente(@RequestBody DUsuario usuario) {
try { try {
servicioReservas.nuevoCliente(mapeador.entidad(usuario)); servicioReservas.nuevoCliente(mapeador.entidadNueva(usuario));
} }
catch(UsuarioYaRegistrado e) { catch(UsuarioYaRegistrado e) {
return ResponseEntity.status(HttpStatus.CONFLICT).build(); return ResponseEntity.status(HttpStatus.CONFLICT).build();
...@@ -77,7 +76,7 @@ public class ControladorReservas { ...@@ -77,7 +76,7 @@ public class ControladorReservas {
@PostMapping("/hoteles") @PostMapping("/hoteles")
public ResponseEntity<Void> nuevoHotel(@RequestBody DHotel hotel) { public ResponseEntity<Void> nuevoHotel(@RequestBody DHotel hotel) {
servicioReservas.nuevoHotel(direccion, mapeador.entidad(hotel)); servicioReservas.nuevoHotel(direccion, mapeador.entidadNueva(hotel));
return ResponseEntity.status(HttpStatus.CREATED).build(); return ResponseEntity.status(HttpStatus.CREATED).build();
} }
......
...@@ -6,6 +6,7 @@ import es.ujaen.dae.reservahoteles.entidades.Usuario; ...@@ -6,6 +6,7 @@ import es.ujaen.dae.reservahoteles.entidades.Usuario;
import es.ujaen.dae.reservahoteles.excepciones.UsuarioNoRegistrado; import es.ujaen.dae.reservahoteles.excepciones.UsuarioNoRegistrado;
import es.ujaen.dae.reservahoteles.repositorios.RepositorioUsuarios; import es.ujaen.dae.reservahoteles.repositorios.RepositorioUsuarios;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
...@@ -16,6 +17,9 @@ import org.springframework.stereotype.Service; ...@@ -16,6 +17,9 @@ import org.springframework.stereotype.Service;
public class Mapeador { public class Mapeador {
@Autowired @Autowired
RepositorioUsuarios repositorioUsuarios; RepositorioUsuarios repositorioUsuarios;
@Autowired
PasswordEncoder codificadorClaves;
public DUsuario dto(Usuario usuario) { public DUsuario dto(Usuario usuario) {
// Nunca extraemos la clave de la entidad // Nunca extraemos la clave de la entidad
...@@ -25,6 +29,10 @@ public class Mapeador { ...@@ -25,6 +29,10 @@ public class Mapeador {
public Usuario entidad(DUsuario dUsuario) { public Usuario entidad(DUsuario dUsuario) {
return new Usuario(dUsuario.nombre(), dUsuario.direccion(), dUsuario.tlf(), dUsuario.email(), dUsuario.clave()); return new Usuario(dUsuario.nombre(), dUsuario.direccion(), dUsuario.tlf(), dUsuario.email(), dUsuario.clave());
} }
public Usuario entidadNueva(DUsuario dUsuario) {
return new Usuario(dUsuario.nombre(), dUsuario.direccion(), dUsuario.tlf(), dUsuario.email(), codificadorClaves.encode(dUsuario.clave()));
}
public DHotel dto(Hotel hotel) { public DHotel dto(Hotel hotel) {
return new DHotel( return new DHotel(
...@@ -51,6 +59,18 @@ public class Mapeador { ...@@ -51,6 +59,18 @@ public class Mapeador {
dHotel.precioHabSimple(), dHotel.precioHabSimple(),
dHotel.precioHabDoble()); dHotel.precioHabDoble());
} }
public Hotel entidadNueva(DHotel dHotel) {
return new Hotel(
dHotel.nombre(),
dHotel.localidad(),
dHotel.provincia(),
dHotel.cp(),
dHotel.numHabSimple(),
dHotel.numHabDoble(),
dHotel.precioHabSimple(),
dHotel.precioHabDoble());
}
public DReserva dto(Reserva reserva) { public DReserva dto(Reserva reserva) {
return new DReserva( return new DReserva(
...@@ -73,5 +93,17 @@ public class Mapeador { ...@@ -73,5 +93,17 @@ public class Mapeador {
dReserva.fechaFin(), dReserva.fechaFin(),
dReserva.numHabSimple(), dReserva.numHabSimple(),
dReserva.numHabDoble()); dReserva.numHabDoble());
}
public Reserva entidadNueva(DReserva dReserva) {
Usuario usuario = repositorioUsuarios.buscar(dReserva.emailUsuario())
.orElseThrow(UsuarioNoRegistrado::new);
return new Reserva(
usuario,
dReserva.fechaInicio(),
dReserva.fechaFin(),
dReserva.numHabSimple(),
dReserva.numHabDoble());
} }
} }
...@@ -41,7 +41,7 @@ public class ServicioReservas { ...@@ -41,7 +41,7 @@ public class ServicioReservas {
@Value("${meses-historico}") @Value("${meses-historico}")
int mesesHistorico; int mesesHistorico;
// Cliente especial de dirección // Cliente especial de dirección
private static final Usuario direccion = new Usuario("direccion", "-", "670343332", "direccion@hotelxyz.es", "SeCrEtO"); private static final Usuario direccion = new Usuario("direccion", "-", "670343332", "direccion@hotelxyz.es", "SeCrEtO");
...@@ -59,7 +59,7 @@ public class ServicioReservas { ...@@ -59,7 +59,7 @@ public class ServicioReservas {
// Evitar que se cree un usuario con la cuenta de direccion // Evitar que se cree un usuario con la cuenta de direccion
if (cliente.email().equals(direccion.email())) if (cliente.email().equals(direccion.email()))
throw new UsuarioYaRegistrado(); throw new UsuarioYaRegistrado();
repositorioClientes.guardar(cliente); repositorioClientes.guardar(cliente);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment