def booking_add(self):
        print(Fore.RED, " Add Booking ".center(30, "*"), Fore.RESET)
        guest = Guest_service()
        guest_id = guest.search_guest()

        Apartments = Apartment_service()
        apartments = Apartments.search_apartment()
       
        rowIdx = get_int("Please select apt number: ", 0, len(apartments))
        apartment = apartments[rowIdx]
        apartment_price = apartment.price

        booking = Booking()
        booking.guest_id = guest_id
        booking.booked_date = datetime.datetime.now()
        booking.chek_in_date = get_date("Input Data")
        booking.chek_out_date = get_date("Input Data")
        
        if (apartments == None or len(apartments) == 0):
            print("Error")
            return

        apartment.bookings.append(booking)

        apartment.save()    
        
        columns = ("Chek_in_date", "Chek_out_date", "Booked_date")
        pretty_print([booking], columns)

        print("{}Booking duration is {} day(s).{}".format(Fore.YELLOW, booking.duration, Fore.RESET))
        print("{}TOTAL Price {} USD.{}".format(Fore.YELLOW, apartment_price * booking.duration, Fore.RESET))
    
        print(Fore.RED, " Apartment Saved".center(30, "*"), Fore.RESET)
    def booking_list(self):
        print(Fore.RED, " View Booking by Apartment ".center(30, "*"),
              Fore.RESET)
        Apartments = Apartment_service()
        apartments = Apartments.apartments_list()
        rows = []

        if not apartments:
            return rows

        for apartment in apartments:
            #  перевіряємо чи є бронювання
            if not apartment.bookings:
                continue
            for booking in apartment.bookings:
                #  Щоб не друкувати на кожне бронювання окрему табличку
                guest = booking.guest_id

                if guest:
                    data = {
                        "name": apartment.name,
                        "user_name": guest.name,
                        "is_card": guest.is_card,
                        "check_in": booking.chek_in_date,
                        "check_out": booking.chek_out_date,
                        "price": booking.duration * apartment.price,
                    }
                    rows.append(data)
        return rows
Beispiel #3
0
    def add_reservation(self):
        print("Add Reservation")

        Apartments = Apartment_service()
        apartments = Apartments.search_apartment()

        if apartments is None or len(apartments) == 0:
            print(Fore.YELLOW, "Apatrments not found", Fore.RESET)
            return
        
        rowIdx = get_int("Please, select apt number: ", 0, len(apartments))

        apartment = apartments[rowIdx]
    
        reservation = Reservation()

        reservation.booked_date = datetime.datetime.now()
       
        reservation.check_in_date = get_date("Please, enter check in date: ")
        reservation.check_out_date = get_date("Please, enter check out date: ")

        apartment.reservations.append(reservation)

        apartment.save()

        columns = ('Check_in_date', 'Check_out_date', 'Booked_date')
        pretty_print([reservation], columns)
        print("{} Booking duration is {} day(s). {}".format(Fore.BLUE, reservation.duration, Fore.RESET))

        print(Fore.GREEN, "Reservation saved", Fore.RESET)
    def reservation_list(self):
        Apartments = Apartment_service()
        apartments = Apartments.search_apartment()

        if apartments is None or len(apartments) == 0:
            print(Fore.YELLOW, "Apartments not found", Fore.RESET)
            return

        rowIdx = get_int("Please, select apt number: ", 1, len(apartments)) - 1

        apartment = apartments[rowIdx]
        reservations = apartment.reservations
        columns = ('Check_in_date', 'Check_out_date', 'Booked_date')
        pretty_print(reservations, columns)
Beispiel #5
0
    def add_reservation(self, data):
        Apartments = Apartment_service()
        apartment = Apartments.search_apartment(data['name']).first()

        Guests = Guest_service()
        guest = Guests.search_guest(data["guest_name"], data["guest_last_name"], data["guest_age"]).first()

        reservation = Reservation()
        reservation.guest = guest
        reservation.booked_date = datetime.datetime.now()
        reservation.check_in_date = get_date_from_QDate(str(data['check_in']))
        reservation.check_out_date = get_date_from_QDate(str(data['check_out']))
        apartment.reservations.append(reservation)
        apartment.save()
        return True
    def add_reservation(self):
        print("Add Reservation")

        Apartments = Apartment_service()
        apartments = Apartments.search_apartment()

        if apartments is None or len(apartments) == 0:
            print(Fore.YELLOW, "Apartments not found", Fore.RESET)
            return

        rowIdx = get_int("Please, select apt number: ", 1, len(apartments)) - 1

        apartment = apartments[rowIdx]

        Guests = Guest_service()
        guests = Guests.search_guest()

        if guests is None or len(guests) == 0:
            guest = Guests.add_guest()
        else:
            rowId = get_int("Please, select guest number: ", 1,
                            len(guests)) - 1
            guest = guests[rowId]

        reservation = Reservation()

        reservation.guest = guest
        reservation.booked_date = datetime.datetime.now()
        reservation.check_in_date = get_date("Please, enter check in date: ")
        reservation.check_out_date = get_date("Please, enter check out date: ")

        if reservation.check_in_date > reservation.check_out_date:
            print("Check out date must be later than the check in date")
            return

        apartment.reservations.append(reservation)

        apartment.save()

        columns = ('Check_in_date', 'Check_out_date', 'Booked_date')
        pretty_print([reservation], columns)
        print("{} Booking duration is {} day(s).{}".format(
            Fore.BLUE, reservation.duration, Fore.RESET))

        print(Fore.GREEN, "Reservation made successfully", Fore.RESET)
    def booking_list(self):
        print(Fore.RED, " View Booking by Apartment ".center(30, "*"), Fore.RESET)
        columns_apt = ("Name", "price")
        columns_booking = ("guest_id", "chek_in_date", "chek_out_date", "booked_date")

        #  Повертаємо апартаменти та друкуємо табличку
        Apartments = Apartment_service()
        apartments = Apartments.search_apartment()

        for apartment in apartments:
            guest_bookings = []

            #  перевіряємо чи є бронювання
            if apartment.bookings:
                for booking in apartment.bookings:
                    #  Щоб не друкувати на кожне бронювання окрему табличку
                    guest_bookings.append(booking)
                print(Fore.YELLOW, "Booking(s) in " + apartment.name, Fore.RESET)
                pretty_print(guest_bookings, columns_booking)
            else:
                print(Fore.YELLOW, "No booking(s) yet in " + apartment.name, Fore.RESET)
Beispiel #8
0
    def reservation_list(self):
        print("View Reservations")
        Apartments = Apartment_service()
        apartments = Apartments.apartments_list()
        rows = []
        if not apartments:
            return rows
        for apartment in apartments:
            if not apartment.reservations:
                continue
            for reservation in apartment.reservations:
                guest = reservation.guest
                if guest:
                    data = {
                        "name": apartment.name,
                        "user_name": guest.name,
                        "is_card": guest.is_card,
                        "check_in": reservation.check_in_date,
                        "check_out": reservation.check_out_date,
                        "price": reservation.duration * apartment.price
                    }
                    rows.append(data)

        return rows
Beispiel #9
0
def main():
    db_setup.global_init()

    print(Fore.BLUE, "Hotel service", Fore.RESET)
    commands()

    apartments = Apartment_service()
    guests = Guest_service()
    reservations = Reservation_service()

    while True:
        action = get_action()
        with switch(action) as s:
            s.case('l', apartments.apartments_list)
            s.case('a', apartments.add_apartment)
            s.case('s', apartments.search_apartment)
            s.case('v', guests.guest_list)
            s.case('g', guests.add_guest)
            s.case('b', reservations.reservation_list)
            s.case('m', reservations.add_reservation)
            s.case('?', commands)
            s.case('e', exit)
            s.default(lambda: print("Sorry, this is unknown command"))
Beispiel #10
0
def main():
    db_setup.global_init()
    print(Fore.BLUE, "Hotel service", Fore.RESET)

    commands()

    apartments = Apartment_service()
    guests = Guest_service()
    bookings = Booking_service()

    while True:
        action = get_action()
        with switch(action) as s:
            s.case('l', apartments.apartments_list)
            s.case('a', apartments.apartments_add)
            s.case('s', apartments.search_apartment)
            s.case('v', guests.guest_list)
            s.case('g', guests.guest_add)
            s.case('b', bookings.booking_list)
            s.case('sg', bookings.booking_seach_by_name)
            s.case('m', bookings.booking_add)
            s.case('?', commands)
            s.case('e', exit)
            s.default(lambda: print("Sory? this is not comand"))