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;
/** /**
...@@ -17,6 +18,9 @@ public class Mapeador { ...@@ -17,6 +18,9 @@ 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
return new DUsuario(usuario.nombre(), usuario.direccion(), usuario.tlf(), usuario.email(), ""); return new DUsuario(usuario.nombre(), usuario.direccion(), usuario.tlf(), usuario.email(), "");
...@@ -26,6 +30,10 @@ public class Mapeador { ...@@ -26,6 +30,10 @@ public class Mapeador {
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(
hotel.id(), hotel.id(),
...@@ -52,6 +60,18 @@ public class Mapeador { ...@@ -52,6 +60,18 @@ public class Mapeador {
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(
reserva.num(), reserva.num(),
...@@ -74,4 +94,16 @@ public class Mapeador { ...@@ -74,4 +94,16 @@ public class Mapeador {
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());
}
} }
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