class Hotel
{
int id;
String hotelName;
Location location;
HotelType hotelType;
List<Room> roomsList;
int numOfFloors;
List<Ratings> ratings;
List<String> facilities; //wifi,food,hot shower,24hrs electricity
}
class Location{
int pin;
String street;
String area;
String city;
String country;
}
enum HotelType{
LUXURY_RESORT,
FIVE_STAR,
THREE_STAR,
ECONOMY
}
class Room{
int roomId;
int floorNum;
RoomType roomType;
RoomStatus roomStatus;
Double roomPrice;
List<Room> searchRoom(roomType);
}
enum RoomType{
DELUXE, FAMILY_SUITE, STANDARD
}
enum RoomStatus{
AVAILABLE,
NOT_AVAILABLE,
RESERVED,
OCCUPIED
}
class Ratings
{
int ratingId;
int numOfStars; //ratings out of 5
String comment;
int userId;
}
class Booking{
int bookingId;
int userId;
int hoteld;
List<Integer> roomIds;
LocalDateTime bookingCreationTime;
Duration bookingDuration;
double totalCostOfBooking;
PaymentStatus paymentStatus;
public int createBooking(userId,roomIds,bookingDuration,paymentStatus); //imp api
public boolean cancelBooking(userId,roomIds); //imp api
public List<Booking> getBookingHistory(userId);
}
class Account{
int userId;
String password;
AccountStatus accountStatus;
public void resetPassword(userId);
}
class Person{
String personName;
String email;
String phoneNum;
Account account;
AccountType accountType;
getAllBookings(userId); //self or receptionist
}
class Receptionist extends Person{
Search searchObj;
Booking bookingObj;
public void checkInGuest(Booking booking);
public void checkoutGuest(Booking booking);
}
enum AccountStatus{
ACTIVE,
CLOSED,
CANCELED,
BLACKLISTED,
BLOCKED
}
enum AccountType{
RECEPTIONIST, REGISTERED_USER, GUEST,ADMIN
}
class Search{
public List<Room> searchRoom(RoomType roomType, Duration duration);
}
enum PaymentStatus{
PENDING,
COMPLETED,
REFUNDED,
CANCELED,
FAILED
}