Commit 744fb747 by Antonio Rueda

Controlador y DTOs añadidos

parent 8537d747
......@@ -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.nombreSimp = normalizar(nombre);
this.localidad = localidad;
......@@ -81,6 +82,10 @@ public class Hotel {
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
......
......@@ -7,7 +7,6 @@ import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToOne;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.PositiveOrZero;
import java.time.LocalDate;
......@@ -40,13 +39,21 @@ public class Reserva {
}
public Reserva(Usuario cliente, LocalDate fechaInicio, LocalDate fechaFin, int numHabSimple, int numHabDoble) {
this.num = 0;
public Reserva(int num, Usuario cliente, LocalDate fechaInicio, LocalDate fechaFin, int numHabSimple, int numHabDoble) {
this.num = num;
this.cliente = cliente;
this.fechaInicio = fechaInicio;
this.fechaFin = fechaFin;
this.numHabSimple = numHabSimple;
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() {
......
......@@ -5,9 +5,9 @@ package es.ujaen.dae.reservahoteles.excepciones;
*
* @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;
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.PersistenceContext;
import java.util.Optional;
......@@ -26,7 +26,7 @@ public class RepositorioUsuarios {
public void guardar(Usuario usuario) {
if (em.find(Usuario.class, usuario.email()) != null)
throw new ClienteYaRegistrado();
throw new UsuarioYaRegistrado();
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;
import es.ujaen.dae.reservahoteles.entidades.Usuario;
import es.ujaen.dae.reservahoteles.entidades.Hotel;
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.RepositorioUsuarios;
import es.ujaen.dae.reservahoteles.util.UtilString;
......@@ -58,7 +58,7 @@ public class ServicioReservas {
public void nuevoCliente(@Valid Usuario cliente) {
// Evitar que se cree un usuario con la cuenta de direccion
if (cliente.email().equals(direccion.email()))
throw new ClienteYaRegistrado();
throw new UsuarioYaRegistrado();
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