diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/controllers/UserController.java b/java/roomBooking/src/main/java/com/uva/roomBooking/controllers/UserController.java index bbdfb0873c750bda3f762979876e04f12b3d4665..3a744d5ab396f2d71f0e2452b90c0a3b6c21a673 100644 --- a/java/roomBooking/src/main/java/com/uva/roomBooking/controllers/UserController.java +++ b/java/roomBooking/src/main/java/com/uva/roomBooking/controllers/UserController.java @@ -3,10 +3,8 @@ package com.uva.roomBooking.controllers; import java.time.LocalDate; import java.util.List; import java.util.Map; -import java.util.Optional; import org.springframework.http.HttpStatus; -import org.springframework.http.HttpStatusCode; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.DeleteMapping; @@ -51,9 +49,7 @@ public class UserController { @PostMapping public User addUser(@RequestBody User user) { - // TODO revisar como se desea manejar estado por defecto user.setStatus(UserStatus.NO_BOOKINGS); - // Aunque se asegure a lo mejor no es la forma de manejo esperada return userRepository.save(user); } diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/models/User.java b/java/roomBooking/src/main/java/com/uva/roomBooking/models/User.java index afb367bb94a4e9408f24fdad21fe382c293fb7b5..05e1a24cba65aba82738834b8d09ae4fa621234a 100644 --- a/java/roomBooking/src/main/java/com/uva/roomBooking/models/User.java +++ b/java/roomBooking/src/main/java/com/uva/roomBooking/models/User.java @@ -1,5 +1,6 @@ package com.uva.roomBooking.models; +import java.time.LocalDate; import java.util.List; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -19,6 +20,7 @@ import jakarta.persistence.Table; @Entity @Table(name = "users") public class User { + // TODO extraer a dos clases hijas, una por cada tipo @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @@ -30,9 +32,16 @@ public class User { @Basic(optional = false) private String email; + @Basic(optional = false) + private String password; + @Basic(optional = false) @Enumerated(EnumType.STRING) - private UserStatus status = UserStatus.NO_BOOKINGS; + private UserRol rol = UserRol.CONSUMER; + + @Basic(optional = false) + @Enumerated(EnumType.STRING) + private UserStatus status; @JsonIgnore @OneToMany(mappedBy = "userId", fetch = FetchType.EAGER, cascade = CascadeType.ALL) @@ -41,9 +50,12 @@ public class User { public User() { } - public User(int id, String name, String email, UserStatus status, List<Booking> bookings) { + public User(int id, String name, String email, String password, UserRol rol, UserStatus status, + List<Booking> bookings) { setId(id); + setName(name); setEmail(email); + setRol(rol); setStatus(status); setBookings(bookings); } @@ -72,8 +84,28 @@ public class User { this.email = email; } + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public UserRol getRol() { + return this.rol; + } + + public void setRol(UserRol rol) { + this.rol = rol; + } + public UserStatus getStatus() { - return this.status; + if (!getBookings().isEmpty()) + return UserStatus.NO_BOOKINGS; + boolean activeBookings = getBookings().stream() + .anyMatch(booking -> !booking.getEndDate().isBefore(LocalDate.now())); // reserva >= ahora + return activeBookings ? UserStatus.WITH_ACTIVE_BOOKINGS : UserStatus.WITH_INACTIVE_BOOKINGS; } public void setStatus(UserStatus status) { diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/models/UserRol.java b/java/roomBooking/src/main/java/com/uva/roomBooking/models/UserRol.java new file mode 100644 index 0000000000000000000000000000000000000000..cba769f4362bd1209a1135a8e2624b5b45300c07 --- /dev/null +++ b/java/roomBooking/src/main/java/com/uva/roomBooking/models/UserRol.java @@ -0,0 +1,5 @@ +package com.uva.roomBooking.models; + +public enum UserRol { + HOTEL_ADMIN, CONSUMER +}