Klasa HotelService
Klasa HotelService
stanowi główną logikę aplikacyjną systemu zarządzania hotelem.
Łączy funkcje związane z pokojami, gośćmi, rezerwacjami i płatnościami, zapewniając wygodny interfejs do operacji biznesowych.
Umożliwia m.in. dodawanie pokoi, rejestrację gości, tworzenie rezerwacji, przetwarzanie płatności oraz sprawdzanie dostępności.
Dokumentacja techniczna
Logika aplikacyjna zarządzająca hotelem, rezerwacjami i płatnościami.
Tworzy instancję hotelu.
Source code in services/hotel_service.py
| def __init__(self, name: str, address: str):
"""Tworzy instancję hotelu."""
self.hotel = Hotel(name, address)
|
add_room(number, room_type, price_per_night, capacity)
Dodaje pokój do hotelu.
Source code in services/hotel_service.py
| def add_room(self, number: str, room_type: str, price_per_night: float, capacity: int) -> Room:
"""Dodaje pokój do hotelu."""
room = Room(number, room_type, price_per_night, capacity)
self.hotel.add_room(room)
return room
|
check_availability(room_number, check_in, check_out)
Sprawdza, czy dany pokój jest dostępny w podanym terminie.
Source code in services/hotel_service.py
| def check_availability(self, room_number: str, check_in: date, check_out: date) -> bool:
"""Sprawdza, czy dany pokój jest dostępny w podanym terminie."""
room = self.hotel.find_room_by_number(room_number)
if not room:
raise ValueError(f"Pokój {room_number} nie istnieje.")
return self.hotel.is_room_available(room, check_in, check_out)
|
confirm_payment(payment)
Potwierdza płatność.
Source code in services/hotel_service.py
| def confirm_payment(self, payment: Payment) -> None:
"""Potwierdza płatność."""
payment.confirm_payment()
|
create_payment(reservation, method)
Tworzy płatność za rezerwację.
Source code in services/hotel_service.py
| def create_payment(self, reservation: Reservation, method: str) -> Payment:
"""Tworzy płatność za rezerwację."""
return Payment(reservation, method)
|
get_all_reservations()
Zwraca listę wszystkich rezerwacji w hotelu.
Source code in services/hotel_service.py
| def get_all_reservations(self) -> List[Reservation]:
"""Zwraca listę wszystkich rezerwacji w hotelu."""
return self.hotel.get_all_reservations()
|
list_rooms(room_type=None, capacity=None)
Zwraca dostępne pokoje, z możliwością filtrowania.
Source code in services/hotel_service.py
| def list_rooms(self, room_type: Optional[str] = None, capacity: Optional[int] = None) -> List[Room]:
"""Zwraca dostępne pokoje, z możliwością filtrowania."""
return self.hotel.filter_rooms(room_type, capacity)
|
make_reservation(guest, room_number, check_in, check_out)
Tworzy rezerwację, jeśli pokój jest dostępny.
Source code in services/hotel_service.py
| def make_reservation(
self, guest: Guest, room_number: str, check_in: date, check_out: date
) -> Reservation:
"""Tworzy rezerwację, jeśli pokój jest dostępny."""
return self.hotel.make_reservation(guest, room_number, check_in, check_out)
|
register_guest(first_name, last_name, email, phone_number)
Rejestruje nowego gościa.
Source code in services/hotel_service.py
| def register_guest(self, first_name: str, last_name: str, email: str, phone_number: str) -> Guest:
"""Rejestruje nowego gościa."""
return Guest(first_name, last_name, email, phone_number)
|
simulate_full_booking_flow()
Symuluje pełny proces rezerwacji i płatności – do testów integracyjnych.
Source code in services/hotel_service.py
| def simulate_full_booking_flow(self) -> Dict[str, Any]:
"""Symuluje pełny proces rezerwacji i płatności – do testów integracyjnych."""
# Dodanie pokoi
room1 = self.add_room("101", "double", 320.0, 2)
room2 = self.add_room("102", "single", 200.0, 1)
# Rejestracja gościa
guest = self.register_guest("Jan", "Nowak", "jan.nowak@example.com", "123456789")
# Tworzenie rezerwacji
check_in = date(2025, 7, 10)
check_out = date(2025, 7, 13)
reservation = self.make_reservation(guest, "101", check_in, check_out)
# Tworzenie i potwierdzenie płatności
payment = self.create_payment(reservation, "karta")
self.confirm_payment(payment)
return {
"guest": guest,
"room": room1,
"reservation": reservation,
"payment": payment
}
|
Przykład użycia
| from services.hotel_service import HotelService
from datetime import date
# Tworzenie hotelu
service = HotelService("Hotel Warszawa", "ul. Przykładowa 1")
# Dodanie pokoju
room = service.add_room("101", "double", 300.0, 2)
# Rejestracja gościa
guest = service.register_guest("Anna", "Kowalska", "anna@example.com", "555-123-456")
# Tworzenie rezerwacji
check_in = date(2025, 8, 1)
check_out = date(2025, 8, 5)
reservation = service.make_reservation(guest, "101", check_in, check_out)
# Płatność
payment = service.create_payment(reservation, "przelew")
service.confirm_payment(payment)
|