Commit 744fb747 by Antonio Rueda

Controlador y DTOs añadidos

parent 8537d747
...@@ -67,7 +67,8 @@ public class Hotel { ...@@ -67,7 +67,8 @@ public class Hotel {
} }
public Hotel(String nombre, String localidad, String provincia, String cp, int numHabSimple, int numHabDoble, int precioHabSimple, int precioHabDoble) { public Hotel(int id, String nombre, String localidad, String provincia, String cp, int numHabSimple, int numHabDoble, int precioHabSimple, int precioHabDoble) {
this.id = id;
this.nombre = nombre; this.nombre = nombre;
this.nombreSimp = normalizar(nombre); this.nombreSimp = normalizar(nombre);
this.localidad = localidad; this.localidad = localidad;
...@@ -82,6 +83,10 @@ public class Hotel { ...@@ -82,6 +83,10 @@ public class Hotel {
reservas = new LinkedList<>(); reservas = new LinkedList<>();
} }
public Hotel(String nombre, String localidad, String provincia, String cp, int numHabSimple, int numHabDoble, int precioHabSimple, int precioHabDoble) {
this(0, nombre, localidad, provincia, cp, numHabSimple, numHabDoble, precioHabSimple, precioHabDoble);
}
/** /**
* Realza una reserva en el hotel * Realza una reserva en el hotel
* @param reserva la reserva a añadir * @param reserva la reserva a añadir
......
...@@ -7,7 +7,6 @@ import jakarta.persistence.GenerationType; ...@@ -7,7 +7,6 @@ import jakarta.persistence.GenerationType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.ManyToOne; import jakarta.persistence.ManyToOne;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.PositiveOrZero; import jakarta.validation.constraints.PositiveOrZero;
import java.time.LocalDate; import java.time.LocalDate;
...@@ -40,8 +39,8 @@ public class Reserva { ...@@ -40,8 +39,8 @@ public class Reserva {
} }
public Reserva(Usuario cliente, LocalDate fechaInicio, LocalDate fechaFin, int numHabSimple, int numHabDoble) { public Reserva(int num, Usuario cliente, LocalDate fechaInicio, LocalDate fechaFin, int numHabSimple, int numHabDoble) {
this.num = 0; this.num = num;
this.cliente = cliente; this.cliente = cliente;
this.fechaInicio = fechaInicio; this.fechaInicio = fechaInicio;
this.fechaFin = fechaFin; this.fechaFin = fechaFin;
...@@ -49,6 +48,14 @@ public class Reserva { ...@@ -49,6 +48,14 @@ public class Reserva {
this.numHabDoble = numHabDoble; this.numHabDoble = numHabDoble;
} }
public Reserva(Usuario cliente, LocalDate fechaInicio, LocalDate fechaFin, int numHabSimple, int numHabDoble) {
this(0, cliente, fechaInicio, fechaFin, numHabSimple, numHabDoble);
}
public int num() {
return num;
}
public LocalDate fechaInicio() { public LocalDate fechaInicio() {
return fechaInicio; return fechaInicio;
} }
......
...@@ -5,9 +5,9 @@ package es.ujaen.dae.reservahoteles.excepciones; ...@@ -5,9 +5,9 @@ package es.ujaen.dae.reservahoteles.excepciones;
* *
* @author ajrueda * @author ajrueda
*/ */
public class ClienteYaRegistrado extends RuntimeException { public class UsuarioNoRegistrado extends RuntimeException {
public ClienteYaRegistrado() { public UsuarioNoRegistrado() {
} }
} }
package es.ujaen.dae.reservahoteles.excepciones;
/**
*
* @author ajrueda
*/
public class UsuarioYaRegistrado extends RuntimeException {
public UsuarioYaRegistrado() {
}
}
package es.ujaen.dae.reservahoteles.repositorios; package es.ujaen.dae.reservahoteles.repositorios;
import es.ujaen.dae.reservahoteles.entidades.Usuario; import es.ujaen.dae.reservahoteles.entidades.Usuario;
import es.ujaen.dae.reservahoteles.excepciones.ClienteYaRegistrado; import es.ujaen.dae.reservahoteles.excepciones.UsuarioYaRegistrado;
import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext; import jakarta.persistence.PersistenceContext;
import java.util.Optional; import java.util.Optional;
...@@ -26,7 +26,7 @@ public class RepositorioUsuarios { ...@@ -26,7 +26,7 @@ public class RepositorioUsuarios {
public void guardar(Usuario usuario) { public void guardar(Usuario usuario) {
if (em.find(Usuario.class, usuario.email()) != null) if (em.find(Usuario.class, usuario.email()) != null)
throw new ClienteYaRegistrado(); throw new UsuarioYaRegistrado();
em.persist(usuario); em.persist(usuario);
} }
......
package es.ujaen.dae.reservahoteles.rest;
import es.ujaen.dae.reservahoteles.entidades.Hotel;
import es.ujaen.dae.reservahoteles.entidades.Reserva;
import es.ujaen.dae.reservahoteles.entidades.Usuario;
import es.ujaen.dae.reservahoteles.excepciones.UsuarioNoRegistrado;
import es.ujaen.dae.reservahoteles.repositorios.RepositorioUsuarios;
import es.ujaen.dae.reservahoteles.rest.dto.DHotel;
import es.ujaen.dae.reservahoteles.rest.dto.DReserva;
import es.ujaen.dae.reservahoteles.rest.dto.DUsuario;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
*
* @author administrador
*/
@Service
public class ControladorReservas {
@Autowired
RepositorioUsuarios repositorioUsuarios;
static DUsuario dtoUsuario(Usuario usuario) {
// Nunca extraemos la clave de la entidad
return new DUsuario(usuario.nombre(), usuario.direccion(), usuario.tlf(), usuario.email(), "");
}
static Usuario usuario(DUsuario dUsuario) {
return new Usuario(dUsuario.nombre(), dUsuario.direccion(), dUsuario.tlf(), dUsuario.email(), dUsuario.clave());
}
static DHotel dtoHotel(Hotel hotel) {
return new DHotel(
hotel.id(),
hotel.nombre(),
hotel.localidad(),
hotel.provincia(),
hotel.cp(),
hotel.numHabSimple(),
hotel.numHabDoble(),
hotel.precioHabSimple(),
hotel.precioHabDoble());
}
static Hotel hotel(DHotel dHotel) {
return new Hotel(
dHotel.id(),
dHotel.nombre(),
dHotel.localidad(),
dHotel.provincia(),
dHotel.cp(),
dHotel.numHabSimple(),
dHotel.numHabDoble(),
dHotel.precioHabSimple(),
dHotel.precioHabDoble());
}
static DReserva dtoReserva(Reserva reserva) {
return new DReserva(
reserva.num(),
reserva.fechaInicio(),
reserva.fechaFin(),
reserva.numHabSimple(),
reserva.numHabDoble(),
reserva.cliente().email());
}
Reserva reserva(DReserva dReserva) {
Usuario usuario = repositorioUsuarios.buscar(dReserva.emailUsuario())
.orElseThrow(UsuarioNoRegistrado::new);
return new Reserva(
dReserva.num(),
usuario,
dReserva.fechaInicio(),
dReserva.fechaFin(),
dReserva.numHabSimple(),
dReserva.numHabDoble());
}
}
package es.ujaen.dae.reservahoteles.rest.dto;
/**
*
* @author ajrueda
*/
public record DHotel(
int id,
String nombre,
String localidad,
String provincia,
String cp,
int numHabSimple,
int numHabDoble,
int precioHabSimple,
int precioHabDoble) {
}
package es.ujaen.dae.reservahoteles.rest.dto;
import java.time.LocalDate;
/**
*
* @author ajrueda
*/
public record DReserva(
int num,
LocalDate fechaInicio,
LocalDate fechaFin,
int numHabSimple,
int numHabDoble,
String emailUsuario) {
}
package es.ujaen.dae.reservahoteles.rest.dto;
/**
*
* @author ajrueda
*/
public record DUsuario(
String nombre,
String direccion,
String tlf,
String email,
String clave) {
}
...@@ -5,7 +5,7 @@ import es.ujaen.dae.reservahoteles.excepciones.OperacionDeDireccion; ...@@ -5,7 +5,7 @@ import es.ujaen.dae.reservahoteles.excepciones.OperacionDeDireccion;
import es.ujaen.dae.reservahoteles.entidades.Usuario; import es.ujaen.dae.reservahoteles.entidades.Usuario;
import es.ujaen.dae.reservahoteles.entidades.Hotel; 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.UsuarioYaRegistrado;
import es.ujaen.dae.reservahoteles.repositorios.RepositorioHoteles; import es.ujaen.dae.reservahoteles.repositorios.RepositorioHoteles;
import es.ujaen.dae.reservahoteles.repositorios.RepositorioUsuarios; import es.ujaen.dae.reservahoteles.repositorios.RepositorioUsuarios;
import es.ujaen.dae.reservahoteles.util.UtilString; import es.ujaen.dae.reservahoteles.util.UtilString;
...@@ -58,7 +58,7 @@ public class ServicioReservas { ...@@ -58,7 +58,7 @@ public class ServicioReservas {
public void nuevoCliente(@Valid Usuario cliente) { public void nuevoCliente(@Valid Usuario cliente) {
// 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 ClienteYaRegistrado(); 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