Skip to content
Snippets Groups Projects
Commit f4a1bb26 authored by hugcubi's avatar hugcubi
Browse files

Corrección Monolito, tanteo de booking remoto

parent 64d82921
Branches
Tags
2 merge requests!36Develop,!29Refactor/auth user split
Showing
with 44 additions and 329 deletions
package com.uva.api.services.users.models;
package com.uva.monolith.services.users.models;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.uva.api.services.bookings.models.Booking;
import com.uva.monolith.services.bookings.models.Booking;
import jakarta.persistence.Basic;
import jakarta.persistence.CascadeType;
......
package com.uva.api.services.users.models;
package com.uva.monolith.services.users.models;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.uva.api.services.hotels.models.Hotel;
import com.uva.monolith.services.hotels.models.Hotel;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
......
package com.uva.api.services.users.models;
package com.uva.monolith.services.users.models;
import com.fasterxml.jackson.annotation.JsonIgnore;
......
package com.uva.api.services.users.models;
package com.uva.monolith.services.users.models;
public enum UserRol {
ADMIN, HOTEL_ADMIN, CLIENT
......
package com.uva.api.services.users.models;
package com.uva.monolith.services.users.models;
public enum UserStatus {
NO_BOOKINGS, WITH_ACTIVE_BOOKINGS, WITH_INACTIVE_BOOKINGS;
......
package com.uva.api.services.users.repositories;
package com.uva.monolith.services.users.repositories;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import com.uva.api.services.users.models.Client;
import com.uva.monolith.services.users.models.Client;
public interface ClientRepository extends JpaRepository<Client, Integer> {
Optional<Client> findByEmail(String email);
......
package com.uva.api.services.users.repositories;
package com.uva.monolith.services.users.repositories;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import com.uva.api.services.users.models.HotelManager;
import com.uva.monolith.services.users.models.HotelManager;
public interface HotelManagerRepository extends JpaRepository<HotelManager, Integer> {
Optional<HotelManager> findByEmail(String email);
......
package com.uva.api.services.users.repositories;
package com.uva.monolith.services.users.repositories;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import com.uva.api.services.users.models.User;
import com.uva.monolith.services.users.models.User;
public interface UserRepository extends JpaRepository<User, Integer> {
Optional<User> findByEmail(String email);
......
package com.uva.api.services.users.services;
package com.uva.monolith.services.users.services;
import java.time.LocalDate;
import java.util.List;
......@@ -10,15 +10,15 @@ import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.client.HttpClientErrorException;
import com.uva.api.services.users.models.AuthResponse;
import com.uva.api.services.users.models.Client;
import com.uva.api.services.users.models.HotelManager;
import com.uva.api.services.users.models.User;
import com.uva.api.services.users.models.UserRol;
import com.uva.api.services.users.models.UserStatus;
import com.uva.api.services.users.repositories.ClientRepository;
import com.uva.api.services.users.repositories.HotelManagerRepository;
import com.uva.api.services.users.repositories.UserRepository;
import com.uva.monolith.services.users.models.AuthResponse;
import com.uva.monolith.services.users.models.Client;
import com.uva.monolith.services.users.models.HotelManager;
import com.uva.monolith.services.users.models.User;
import com.uva.monolith.services.users.models.UserRol;
import com.uva.monolith.services.users.models.UserStatus;
import com.uva.monolith.services.users.repositories.ClientRepository;
import com.uva.monolith.services.users.repositories.HotelManagerRepository;
import com.uva.monolith.services.users.repositories.UserRepository;
@Service
public class UserService {
......
......@@ -9,7 +9,6 @@ import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate;
import com.uva.authentication.models.RegisterRequest;
import com.uva.authentication.models.remote.Response;
import com.uva.authentication.models.remote.User;
@Component
......@@ -39,11 +38,11 @@ public class UserAPI {
* @return User or null if not exists
* @throws HttpClientErrorException
*/
public Response getUserByEmail(String email) {
public User getUserByEmail(String email) {
String url = USER_API_URL + "?email={email}";
System.err.println(url);
try {
ResponseEntity<Response> userResponse = restTemplate.getForEntity(url, Response.class, email);
ResponseEntity<User> userResponse = restTemplate.getForEntity(url, User.class, email);
return userResponse.getBody();
} catch (HttpClientErrorException e) {
if (e.getStatusCode() != HttpStatus.NOT_FOUND)
......
......@@ -7,7 +7,7 @@ import org.springframework.http.client.ClientHttpResponse;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.stereotype.Component;
import com.uva.authentication.models.remote.Response;
import com.uva.authentication.models.remote.User;
import com.uva.authentication.models.remote.UserRol;
import com.uva.authentication.utils.JwtUtil;
......@@ -20,7 +20,7 @@ public class AuthHttpInterceptor implements ClientHttpRequestInterceptor {
private JwtUtil jwtUtil;
private String token;
private final Response USER = new Response(-1, "auth", "auth@dev.com", null, UserRol.ADMIN);
private final User USER = new User(-1, "auth", "auth@dev.com", null, UserRol.ADMIN);
private String getAccessToken() {
if (token == null || token.isEmpty()) {
......
package com.uva.authentication.models.remote;
import jakarta.persistence.Basic;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
@Entity
@Table(name = "bookings")
public class Booking {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
private int id;
@JoinColumn(name = "user_id", referencedColumnName = "id")
@ManyToOne(optional = false, fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
private Client userId;
public Booking() {
}
public Booking(int id, Client userId) {
this.id = id;
this.userId = userId;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return this.id;
}
public void setUserId(Client userId) {
this.userId = userId;
}
public Client getUserId() {
return this.userId;
}
}
package com.uva.authentication.models.remote;
import java.util.ArrayList;
import java.util.List;
import jakarta.persistence.Basic;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.FetchType;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
@Entity
@Table(name = "user_client")
public class Client extends User {
@Basic(optional = false)
@Column(nullable = false)
@Enumerated(EnumType.STRING)
private UserStatus status = UserStatus.NO_BOOKINGS;
@OneToMany(mappedBy = "userId", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<Booking> bookings = new ArrayList<>();
public Client() {
super();
}
public Client(int id, String name, String email, String password, UserStatus status, List<Booking> bookings) {
super(id, name, email, password, UserRol.CLIENT);
setStatus(status);
setBookings(bookings);
}
public UserStatus getStatus() {
return this.status;
}
public void setStatus(UserStatus status) {
this.status = status;
}
public List<Booking> getBookings() {
return this.bookings;
}
public void setBookings(List<Booking> bookings) {
this.bookings = bookings;
}
}
package com.uva.authentication.models.remote;
import jakarta.persistence.Basic;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
@Entity
@Table(name = "hotels")
public class Hotel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
private int id;
@ManyToOne(optional = false)
@JoinColumn(name = "hotel_manager", referencedColumnName = "id")
private HotelManager hotelManager;
public Hotel() {
}
public Hotel(int id, HotelManager hotelManager) {
setId(id);
setHotelManager(hotelManager);
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public void setHotelManager(HotelManager hotelManager) {
this.hotelManager = hotelManager;
}
public HotelManager getHotelManager() {
return hotelManager;
}
}
package com.uva.authentication.models.remote;
import java.util.ArrayList;
import java.util.List;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
@Entity
@Table(name = "hotel_manager_user")
public class HotelManager extends User {
@OneToMany(mappedBy = "hotelManager", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<Hotel> hotels = new ArrayList<>();
public HotelManager() {
super();
}
public HotelManager(int id, String name, String email, String password, List<Hotel> hotels) {
super(id, name, email, password, UserRol.HOTEL_ADMIN);
setHotels(hotels);
}
public void setHotels(List<Hotel> hotels) {
this.hotels = hotels;
}
}
package com.uva.authentication.models.remote;
import com.uva.authentication.models.RegisterRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class Response extends RegisterRequest {
private int id;
}
package com.uva.authentication.models.remote;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.Basic;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Inheritance;
import jakarta.persistence.InheritanceType;
import jakarta.persistence.Table;
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(nullable = false)
import com.uva.authentication.models.RegisterRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class User extends RegisterRequest {
private int id;
@Basic(optional = false)
@Column(nullable = false)
private String name;
@Basic(optional = false)
@Column(nullable = false, unique = true)
private String email;
@JsonIgnore
@Basic(optional = false)
@Column(nullable = false)
private String password;
@Basic(optional = false)
@Column(nullable = false)
@Enumerated(EnumType.STRING)
private UserRol rol = UserRol.CLIENT;
public User() {
}
public User(int id, String name, String email, String password, UserRol rol) {
setId(id);
setName(name);
public User(int id, String email, String password, String name, UserRol rol) {
super();
setEmail(email);
setName(name);
setPassword(password);
setRol(rol);
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return this.email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String rawPassword) {
this.password = rawPassword;
}
public UserRol getRol() {
return this.rol;
}
public void setRol(UserRol rol) {
this.rol = rol;
}
}
package com.uva.authentication.models.remote;
public enum UserRol {
ADMIN, HOTEL_ADMIN, CLIENT
ADMIN, AUTH
}
package com.uva.authentication.models.remote;
public enum UserStatus {
NO_BOOKINGS, WITH_ACTIVE_BOOKINGS, WITH_INACTIVE_BOOKINGS;
}
package com.uva.authentication.repositories;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import com.uva.authentication.models.remote.Client;
public interface ClientRepository extends JpaRepository<Client, Integer> {
Optional<Client> findByEmail(String email);
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment