Skip to content
Snippets Groups Projects
Commit 39cc475c authored by migudel's avatar migudel :speech_balloon:
Browse files

Resto de cambios del anterior commit antes de fusión

parent 2ac41e52
Branches
Tags
1 merge request!26Revert "Funciona register"
Showing
with 103 additions and 151 deletions
const monolithUrl = 'http://localhost:8080';
export const environment = {
production: true,
authAPI: 'http://localhost:8101',
userAPI: `http://${monolithUrl}`,
hotelAPI: `http://${monolithUrl}`,
bookingAPI: `http://${monolithUrl}`,
};
...@@ -44,7 +44,7 @@ export class UserBookingListComponent { ...@@ -44,7 +44,7 @@ export class UserBookingListComponent {
} }
updateBookings() { updateBookings() {
this.bookingClient.getUserBookings(this.userId).subscribe({ this.bookingClient.getBookingsByUser(this.userId).subscribe({
next: (bookings) => { next: (bookings) => {
this.search = true; this.search = true;
switch (this.selectedState) { switch (this.selectedState) {
...@@ -88,7 +88,7 @@ export class UserBookingListComponent { ...@@ -88,7 +88,7 @@ export class UserBookingListComponent {
} }
updateUserStatus() { updateUserStatus() {
this.bookingClient.getUserBookings(this.userId).subscribe({ this.bookingClient.getBookingsByUser(this.userId).subscribe({
next: (bookings) => { next: (bookings) => {
const withActive = bookings.find( const withActive = bookings.find(
(booking) => this.genBookingState(booking) === 'Reserva activa' (booking) => this.genBookingState(booking) === 'Reserva activa'
......
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { environment } from '../../environments/environment'; import { environment } from '../../../environments/environment';
import { HttpClient } from '@angular/common/http';
@Injectable({ @Injectable({
providedIn: 'root', providedIn: 'root',
...@@ -7,5 +8,39 @@ import { environment } from '../../environments/environment'; ...@@ -7,5 +8,39 @@ import { environment } from '../../environments/environment';
export class AuthClientService { export class AuthClientService {
private readonly URI = environment.authAPI; private readonly URI = environment.authAPI;
constructor() {} constructor(private http: HttpClient) {}
login(email: String, password: String) {
return this.http.post(
`${this.URI}/login`,
{ email, password },
{
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods':
'GET, POST, OPTIONS, PUT, PATCH, DELETE',
'Access-Control-Allow-Headers': 'X-Requested-With,content-type',
'Access-Control-Allow-Credentials': 'true',
},
}
);
}
register(name: String, email: String, password: String, rol?: String) {
return this.http.post(
`${this.URI}/register`,
{
name,
email,
password,
rol,
},
{
headers: {
'Content-Type': 'application/json',
},
}
);
}
} }
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http'; import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { environment } from '../../environments/environment'; import { environment } from '../../../environments/environment';
import { Booking } from '../../types/Booking'; // Ajusta la ruta a tu modelo Booking import { Booking } from '../../types/Booking'; // Ajusta la ruta a tu modelo Booking
@Injectable({ @Injectable({
...@@ -31,9 +31,8 @@ export class BookingClientService { ...@@ -31,9 +31,8 @@ export class BookingClientService {
return this.http.get<Booking>(`${this.URI}/${id}`); return this.http.get<Booking>(`${this.URI}/${id}`);
} }
getUserBookings(userId: number) { getBookingsByUser(userId: number) {
// TODO revisar tras división en microservicios return this.http.get<Booking[]>(`${this.URI}?userId=${userId}`);
return this.http.get<Booking[]>(`${this.URI}/${userId}/bookings`);
} }
// Método para eliminar una reserva // Método para eliminar una reserva
......
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { environment } from '../../environments/environment'; import { environment } from '../../../environments/environment';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { Hotel, Room } from '../../types'; import { Hotel, Room } from '../../types';
......
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { environment } from '../../environments/environment'; import { environment } from '../../../environments/environment';
import { User, UserState } from '../../types'; import { User, UserState } from '../../types';
@Injectable({ @Injectable({
......
// Simple -> Un servicio fachada / monolito
const hostname = 'http://localhost:8080';
export const environment = {
production: false,
authAPI: `${hostname}/auth`,
userAPI: `${hostname}/users`,
hotelAPI: `${hostname}/hotels`,
bookingAPI: `${hostname}/bookings`,
};
// Disgregado en microservicios
export const environment = {
production: true,
authAPI: 'http://auth-api:8080',
userAPI: 'http://users-api:8080',
hotelAPI: 'http://hotels-api:8080',
bookingAPI: 'http://bookings-api:8080',
};
// Disgregado en microservicios
export const environment = {
production: false,
authAPI: 'http://localhost:8101',
userAPI: 'http://localhost:8111',
hotelAPI: 'http://localhost:8121',
bookingAPI: 'http://localhost:8131',
};
[
{
"user": {
"name": "John Doe",
"email": "john.doe@example.com",
"status": "NO_BOOKINGS"
},
"room": {
"roomNumber": "101",
"type": "SINGLE",
"available": true
},
"startDate": "2024-03-01",
"endDate": "2024-03-08"
},
{
"user": {
"name": "Pepe",
"email": "pepe@example.com",
"status": "WITH_ACTIVE_BOOKINGS"
},
"room": {
"roomNumber": "101",
"type": "SINGLE",
"available": true
},
"startDate": "2024-03-15",
"endDate": "2024-03-22"
}
]
[
{
"id": 1,
"name": "Hotel 1",
"address": {
"id": 1,
"streetName": "Aca al lao",
"streetKind": "Alargada",
"number": 12,
"postCode": "12345"
},
"rooms": [
{
"id": 1,
"roomNumber": "101",
"type": "SINGLE",
"available": true
},
{
"id": 2,
"roomNumber": "102",
"type": "DOUBLE",
"available": false
}
]
},
{
"id": 2,
"name": "Hotel 2",
"address": {
"id": 2,
"streetName": "Calle de la plaza",
"streetKind": "Alargada",
"number": 12,
"postCode": "12345"
},
"rooms": [
{
"id": 3,
"roomNumber": "103",
"type": "SUITE",
"available": true
}
]
}
]
[
{
"name": "John Doe",
"email": "john.doe@example.com",
"status": "NO_BOOKINGS"
},
{
"name": "Pepe",
"email": "pepe@example.com",
"status": "WITH_ACTIVE_BOOKINGS"
}
]
...@@ -33,11 +33,12 @@ public class BookingController { ...@@ -33,11 +33,12 @@ public class BookingController {
this.roomRepository = roomRepository; this.roomRepository = roomRepository;
} }
@GetMapping(params = { "start", "end", "roomId" }) @GetMapping()
public List<Booking> getAllBookings( public List<Booking> getAllBookings(
@RequestParam(required = false) LocalDate start, @RequestParam(required = false) LocalDate start,
@RequestParam(required = false) LocalDate end, @RequestParam(required = false) LocalDate end,
@RequestParam(required = false) Integer roomId) { @RequestParam(required = false) Integer roomId,
@RequestParam(required = false) Integer userId) {
List<Booking> bookings = null; List<Booking> bookings = null;
if (start != null && end != null) { if (start != null && end != null) {
...@@ -52,7 +53,16 @@ public class BookingController { ...@@ -52,7 +53,16 @@ public class BookingController {
.toList(); .toList();
} }
} }
if (start == null & end == null && roomId == null) { if (userId != null) {
if (bookings == null) {
bookings = bookingRepository.findByUserId(userId);
} else {
bookings = bookings.stream()
.filter(booking -> booking.getUserId().getId() == userId)
.toList();
}
}
if (start == null & end == null && roomId == null && userId == null) {
bookings = bookingRepository.findAll(); bookings = bookingRepository.findAll();
} }
return bookings; return bookings;
......
...@@ -14,10 +14,13 @@ import org.springframework.data.repository.query.Param; ...@@ -14,10 +14,13 @@ import org.springframework.data.repository.query.Param;
import com.uva.monolith.services.bookings.models.Booking; import com.uva.monolith.services.bookings.models.Booking;
public interface BookingRepository extends JpaRepository<Booking, Integer> { public interface BookingRepository extends JpaRepository<Booking, Integer> {
@Query("SELECT b FROM Booking b WHERE b.userId.id = ?1")
List<Booking> findByUserId(int userId);
@Query("SELECT b FROM Booking b WHERE b.roomId.id = ?1") @Query("SELECT b FROM Booking b WHERE b.roomId.id = ?1")
List<Booking> findByRoomId(int roomId); List<Booking> findByRoomId(int roomId);
@Query("SELECT b FROM Booking b WHERE b.startDate < ?1 AND b.endDate > ?2") @Query("SELECT b FROM Booking b WHERE b.startDate >= ?1 AND b.endDate <= ?2")
List<Booking> findByDateRange(@Param("startDate") LocalDate startDate, List<Booking> findByDateRange(@Param("startDate") LocalDate startDate,
@Param("endDate") LocalDate endDate); @Param("endDate") LocalDate endDate);
......
package com.uva.monolith.services.users.controllers; package com.uva.monolith.services.users.controllers;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
import com.uva.monolith.services.bookings.models.Booking; import com.uva.monolith.services.bookings.models.Booking;
import com.uva.monolith.services.users.models.User; 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.models.UserStatus;
import com.uva.monolith.services.users.repositories.UserRepository; import com.uva.monolith.services.users.repositories.UserRepository;
...@@ -50,6 +52,8 @@ public class UserController { ...@@ -50,6 +52,8 @@ public class UserController {
@PostMapping @PostMapping
public User addUser(@RequestBody User user) { public User addUser(@RequestBody User user) {
user.setStatus(UserStatus.NO_BOOKINGS); user.setStatus(UserStatus.NO_BOOKINGS);
if (user.getRol() == null) // Rol por defecto
user.setRol(UserRol.CONSUMER);
return userRepository.save(user); return userRepository.save(user);
} }
......
...@@ -102,7 +102,7 @@ public class User { ...@@ -102,7 +102,7 @@ public class User {
} }
public UserStatus getStatus() { public UserStatus getStatus() {
if (!getBookings().isEmpty()) if (getBookings() == null || getBookings().isEmpty())
return UserStatus.NO_BOOKINGS; return UserStatus.NO_BOOKINGS;
boolean activeBookings = getBookings().stream() boolean activeBookings = getBookings().stream()
.anyMatch(booking -> !booking.getEndDate().isBefore(LocalDate.now())); // reserva >= ahora .anyMatch(booking -> !booking.getEndDate().isBefore(LocalDate.now())); // reserva >= ahora
......
...@@ -31,8 +31,12 @@ public class AuthController { ...@@ -31,8 +31,12 @@ public class AuthController {
@PostMapping("/register") @PostMapping("/register")
public ResponseEntity<String> register(@RequestBody RegisterRequest registerRequest) { public ResponseEntity<String> register(@RequestBody RegisterRequest registerRequest) {
try { try {
LoginRequest loginRequest = new LoginRequest();
loginRequest.setEmail(registerRequest.getEmail());
loginRequest.setPassword(registerRequest.getPassword());
authService.register(registerRequest); authService.register(registerRequest);
return login(registerRequest); return login(loginRequest);
} catch (HttpClientErrorException e) { } catch (HttpClientErrorException e) {
if (e.getStatusCode() == HttpStatus.CONFLICT) { if (e.getStatusCode() == HttpStatus.CONFLICT) {
// return new ResponseEntity<Void>(HttpStatus.FORBIDDEN); // return new ResponseEntity<Void>(HttpStatus.FORBIDDEN);
......
...@@ -31,8 +31,8 @@ public class AuthService { ...@@ -31,8 +31,8 @@ public class AuthService {
if (user == null) if (user == null)
return false; return false;
String hashPass = hashPass(request.getPassword()); String hashPass = hashPass(request.getPassword());
// System.err.println(request.getPassword() + " -> " + hashPass + " == " + System.err.println(request.getPassword() + " -> " + hashPass + " == " +
// user.getPassword()); user.getPassword());
return hashPass.equals(user.getPassword()); return hashPass.equals(user.getPassword());
} }
...@@ -55,6 +55,8 @@ public class AuthService { ...@@ -55,6 +55,8 @@ public class AuthService {
if (user != null) if (user != null)
throw new HttpClientErrorException(HttpStatus.CONFLICT, "Email already in use"); throw new HttpClientErrorException(HttpStatus.CONFLICT, "Email already in use");
String hashPass = hashPass(registerRequest.getPassword());
registerRequest.setPassword(hashPass);
return userAPI.registerUser(registerRequest); return userAPI.registerUser(registerRequest);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment