Exemplo n.º 1
0
 def getAvailableHalls(self, startDate, endDate):
     hallList = Hall.viewAllHalls()
     # input(hallList)
     bookingList = Booking.viewAllBookings()
     # input(bookingList)
     availableHalls = list()
     for hallRow in hallList:
         for bookingRow in bookingList:
             if hallRow[0] == bookingRow[3]:
                 # strDebug = '{}{}{}'.format(str(hallRow[0]),' == ', bookingRow[3])
                 # input(strDebug)
                 formattedStartDate = bookingRow[1].split('-')
                 startDateObj = datetime.date(int(formattedStartDate[0]), int(formattedStartDate[1]), int(formattedStartDate[2]))
                 strDebug = '{}{}{}'.format(startDate,' compared to ',startDateObj)
                 # input(strDebug)
                 # input(startDateObj)
                 formattedEndDate = bookingRow[2].split('-')
                 endDateObj = datetime.date(int(formattedEndDate[0]), int(formattedEndDate[1]), int(formattedEndDate[2]))
                 # input(endDateObj)
                 if startDateObj <= startDate  <= endDateObj or startDateObj <= endDate  <= endDateObj:
                     break
         else:
             availableHalls.append(hallRow)
             # print(availableHalls)
     else:
         return availableHalls
Exemplo n.º 2
0
from booking.booking import Booking

try:
    with Booking() as bot:
        bot.land_first_page()
        bot.change_currency(currency='USD')
        bot.select_place_to_go('New York')
        bot.select_dates(check_in_date='2021-05-19',
                         check_out_date='2021-05-25')
        bot.select_adults(1)
        bot.click_search()
        bot.apply_filtrations()

except Exception as e:
    if 'in PATH' in str(e):
        print(
            'You are trying to run the bot from command line \n'
            'Please add to PATH your Selenium Drivers \n'
            'Windows: \n'
            '    set PATH=%PATH%;C:path-to-your-folder \n \n'
            'Linux: \n'
            '    PATH=$PATH:/path/toyour/folder/ \n'
        )
    else:
        raise
Exemplo n.º 3
0
import imp
from locale import currency
from booking.booking import Booking

with Booking(teardown=False) as bot:
    bot.land_first_page()
    # bot.change_language(lang='en-gb')
    # bot.change_currency(currency='PKR')
    bot.search_place(place='Islamabad')
    bot.select_dates(checkin="2022-01-29", checkout="2022-01-30")
    bot.select_adults(3)
    bot.click_search()
    bot.apply_filter()
    bot.refresh()
    bot.show_results()
Exemplo n.º 4
0
    def customerController(self, userObj):
        """This method contains all functionality related to the customer along with the flow
            Args:
                - userObj -- User
            Raises:
            Returns:
        """
        state = 2
        while state >= 2:
            #display menu for customer
            while state == 2:
                pageName = 'Customer Home Screen'
                userName = userObj.getFirstName()
                optionDisplay = {'1': 'View Halls', '2': 'Search Hall', '3': 'Book Hall', '4': 'View Quotation Requests', '5': 'View Bookings'}
                pageNavDict = {'O': 'Logout', 'E': 'Exit'}
                headerDisplay = 'Input key to select corresponding option'
                displayDict = {'pageName': pageName, 'userName': userName, 'optionDisplay': optionDisplay, 'pageNavDict': pageNavDict, 'headerDisplay': headerDisplay}
                self.displayPage(displayDict)
                invalidSelectionFlag, selection = self.selectOption(optionDisplay, pageNavDict)
                # for navigation menu
                if not invalidSelectionFlag:
                    if selection in pageNavDict:
                        state = self.navOptions(selection, state)
                    elif selection == '1':
                        state = 3
                    elif selection == '2':
                        state = 4
                    elif selection == '3':
                        state = 7
                    elif selection == '4':
                        state = 7
                    elif selection == '5':
                        state = 9
                else:
                    print('Invalid selection, Please input again')

            #display list of halls and provide selection option
            while state == 3:
                pageName = 'View All Halls'
                userName = userObj.getFirstName()
                optionDisplay = Hall.viewAllHalls()
                pageNavDict = {'B': 'Go Back', 'O': 'Logout', 'E': 'Exit'}
                headerDisplay = 'Select ID to view detail and request quotation'
                displayDict = {'pageName': pageName, 'userName': userName, 'optionDisplay': optionDisplay, 'pageNavDict': pageNavDict, 'state': state, 'headerDisplay': headerDisplay}
                self.displayPage(displayDict)
                invalidSelectionFlag, selection = self.selectOption(optionDisplay, pageNavDict)
                if not invalidSelectionFlag:
                    if selection in pageNavDict:
                        if selection == 'B':
                            state = 2
                        else:
                            state = self.navOptions(selection, state)
                    else:
                        state = 5
                        index = selection
                else:
                    print('Invalid selection, Please input again')

            #display hall details of the hall id entered
            while state == 4:
                print('Filter by Date')
                #accept date from user for booking start date
                dateCounter = 3
                while dateCounter > 0:
                    dateFlag, dateObj = self.acceptDate()
                    if dateFlag:
                        startDate = dateObj
                        break
                    else:
                        dateCounter = dateCounter - 1
                        # input(str(dateCounter))
                        print(dateObj,', please try again')
                else:
                    print('Maximum retry reached, navigating back')
                    time.sleep(3)
                    state = 2
                #accept date from user for booking end date
                if dateFlag:
                    dateCounter = 3
                    while dateCounter > 0:
                        dateFlag, dateObj = self.acceptDate(startDate)
                        if dateFlag:
                            endDate = dateObj
                            break
                        else:
                            dateCounter = dateCounter - 1
                            print(dateObj,', please try again')
                    else:
                        print('Maximum retry reached, navigating back')
                        time.sleep(3)
                        state = 2
                    if dateFlag:
                        pageName = "Halls available on selected dates"
                        userName = userObj.getFirstName()
                        optionDisplay = self.getAvailableHalls(startDate, endDate)
                        pageNavDict = {'B': 'Go Back', 'O': 'Logout', 'E': 'Exit'}
                        headerDisplay = "Input ID to view hall details and request quotation"
                        displayDict = {'pageName': pageName, 'userName': userName, 'optionDisplay': optionDisplay, 'pageNavDict': pageNavDict, 'headerDisplay': headerDisplay}
                        self.displayPage(displayDict)
                        invalidSelectionFlag, selection = self.selectOption(optionDisplay, pageNavDict)
                        if not invalidSelectionFlag:
                            if selection in pageNavDict:
                                if selection == 'B':
                                    state = 2
                                else:
                                    state = self.navOptions(selection, state)
                            else:
                                state = 5
                                index = selection
                        else:
                            print('Invalid selection, Please input again')

            #intermediary state not to be jumped onto
            while state == 5:
                pageName = 'Hall Details'
                userName = userObj.getFirstName()
                optionDisplay = Hall.viewHallDetails(index)
                pageNavDict = {'R': 'Request Quote', 'B': 'Go Back', 'O': 'Logout', 'E': 'Exit'}
                hallDetails = Hall.viewHallDetails(index)
                pageNavDict = {'R': 'Request Quote', 'B': 'Go Back', 'O': 'Logout', 'E': 'Exit'}
                displayDict = {'pageName': pageName, 'userName': userName, 'optionDisplay': optionDisplay, 'pageNavDict': pageNavDict, 'state': state}
                self.displayPage(displayDict)
                placeHolder = dict()
                invalidSelectionFlag, selection = self.selectOption(placeHolder, pageNavDict)
                if not invalidSelectionFlag:
                    if selection in pageNavDict:
                        if selection == 'R':
                            state = 6
                        if selection == 'B':
                            state = 3
                        else:
                            state = self.navOptions(selection, state)
                else:
                    print('Invalid selection, Please input again')

            #create quotation request
            while state == 6:
                # pageName = pageName
                # userName = userName
                # optionDisplay = optionDisplay
                # pageNavDict = pageNavDict
                # message = message
                # state = state
                # headerDisplay = headerDisplay
                quotationInfo = dict()
                quotationInfo['reqDate'] = datetime.datetime.now()
                dateCounter = 3
                #accept date from user for booking start date
                while dateCounter > 0:
                    dateFlag, dateObj = self.acceptDate()
                    if dateFlag:
                        quotationInfo['bookingStartDate'] = dateObj
                        break
                    else:
                        dateCounter = dateCounter - 1
                        input(str(dateCounter))
                        print(dateObj,', please try again')
                else:
                    print('Maximum retry reached, navigating back')
                    state = 5
                #accept date from user for booking end date
                if dateFlag:
                    dateCounter = 3
                    while dateCounter > 0:
                        dateFlag, dateObj = self.acceptDate(quotationInfo['bookingStartDate'])
                        if dateFlag:
                            quotationInfo['bookingEndDate'] = dateObj
                            break
                        else:
                            dateCounter = dateCounter - 1
                            print(dateObj,', please try again')
                    else:
                        print('Maximum retry reached, navigating back')
                        state = 5
                    if dateFlag:
                        quotationInfo['hallId'] = index
                        quotationInfo['customerId'] = userObj.getRowId()
                        quotationInfo['quotationAmount'] = self.calculateQuote(quotationInfo['bookingStartDate'], quotationInfo['bookingEndDate'], quotationInfo['hallId'])
                        print('Charge for booking from {} to {} is {}.'.format(quotationInfo['bookingStartDate'].isoformat(),quotationInfo['bookingEndDate'].isoformat(),quotationInfo['quotationAmount']))
                        customerConfirmCounter = 3
                        while customerConfirmCounter > 0:
                            confirmation = input('Confirm Quotation Request(Y/N): ')
                            if confirmation.isalpha():
                                if confirmation.lower() == 'y':
                                    #create object of quotations
                                    quotationObj = Quotation(quotationInfo)
                                    state = 7
                                    break
                                elif confirmation.lower() == 'n':
                                    print('Taking back to previous menu')
                                    time.sleep(2)
                                    state = 5
                                    break
                                else:
                                    print('Invalid input!! Try again')
                                    customerConfirmCounter = customerConfirmCounter - 1
                            else:
                                print('Invalid input!! Try again')
                                customerConfirmCounter = customerConfirmCounter - 1
                        if customerConfirmCounter == 0:
                            print('Maximum Taking back to previous menu')
                            time.sleep(2)
                            state = 5

            #display all quotation requests made by the customer
            while state == 7:
                pageName = 'Quotation Requests'
                userName = userObj.getFirstName()
                optionDisplay = Quotation.listQuotationRequests(userObj.getRowId())
                pageNavDict = {'B': 'Go Back', 'O': 'Logout', 'E': 'Exit'}
                headerDisplay = 'Select an ID to make a booking'
                footerDisplay = 'Booking can be made only for approved requests'
                displayDict = {'pageName': pageName, 'userName': userName, 'optionDisplay': optionDisplay, 'pageNavDict': pageNavDict, 'state': state, 'headerDisplay': headerDisplay, 'footerDisplay': footerDisplay}
                self.displayPage(displayDict)
                placeholder = dict()
                invalidSelectionFlag, selection = self.selectOption(optionDisplay, pageNavDict)
                if not invalidSelectionFlag:
                    if selection in pageNavDict:
                        if selection == 'B':
                            state = 2
                        else:
                            state = self.navOptions(selection, state)
                    else:
                        quotationObj = Quotation({'quotationId': selection})
                        if quotationObj.getStatus() == 'Approved':
                            state = 8
                        elif quotationObj.getStatus() == 'Pending':
                            print('Quotation ID {} is pending at Owner'.format(quotationObj.getQuotationId()))
                            time.sleep(2)
                            state = 7
                        elif quotationObj.getStatus() == 'Completed':
                            print('Booking for the Quotation ID {} is already made by you, try another Quotation ID'.format(quotationObj.getQuotationId()))
                            time.sleep(2)
                            state = 7
                        else:
                            print('Quotation ID {} is rejected by Owner'.format(quotationObj.getQuotationId()))
                            time.sleep(2)
                            state = 7
                else:
                    print('Invalid selection, Please input again')
                    time.sleep(2)

            #display the hall details before booking
            while state == 8:
                bookingInfo = {'bookingStartDate': quotationObj.getBookingStartDate(),'bookingEndDate': quotationObj.getBookingEndDate(),'hallId': quotationObj.getHallId(), 'customerId': quotationObj.getCustomerId(),'bookingAmount': quotationObj.getQuotationAmount(),'quotationId': quotationObj.getQuotationId()}
                optionDisplay = bookingInfo
                pageName = 'Book Hall'
                userName = userObj.getFirstName()
                pageNavDict = {'P': 'Make Payment', 'B': 'Go Back', 'O': 'Logout', 'E': 'Exit'}
                footerDisplay = 'Make payment and complete the booking'
                # state = state
                # headerDisplay = headerDisplay
                displayDict = {'footerDisplay': footerDisplay, 'pageName': pageName, 'userName': userName, 'optionDisplay': optionDisplay, 'pageNavDict': pageNavDict, 'state': state}
                # tableHeader =
                self.displayPage(displayDict)
                placeHolder = dict()
                invalidSelectionFlag, selection = self.selectOption(placeHolder, pageNavDict)
                if not invalidSelectionFlag:
                    if selection in pageNavDict:
                        if selection == 'B':
                            state = 7
                        elif selection == 'P':
                            paytype = input('Select Payment Option: \n [1] Cash \n [2] Coupon \n Enter your choice: ')
                            if paytype.isdigit():
                                if paytype == '1':
                                    #create object of quotations
                                    bookingObj = Booking(bookingInfo)
                                    Quotation.changeStatus(quotationObj.getQuotationId(), 'Completed')
                                    paymentInfo = dict()
                                    paymentInfo['paymentType'] = 'Cash'
                                    paymentInfo['paymentAmount'] = bookingInfo['bookingAmount']
                                    paymentInfo['bookingId'] = bookingObj.getRowId()
                                    paymentInfo['customerId'] = userObj.getRowId()
                                    paymentObj = Payment(paymentInfo)
                                    bookingObj.addPaymentInfo(paymentObj.getRowId())
                                    state = 9
                                    break
                                elif paytype == '2':
                                    couponCode = input('Please Enter the coupon code: ')
                                    bookingObj = Booking(bookingInfo)
                                    Quotation.changeStatus(quotationObj.getQuotationId(), 'Completed')
                                    paymentInfo = dict()
                                    paymentInfo['paymentType'] = 'Cash'
                                    paymentInfo['couponCode'] = couponCode
                                    paymentInfo['paymentAmount'] = bookingInfo['bookingAmount']
                                    paymentInfo['bookingId'] = bookingObj.getRowId()
                                    paymentInfo['customerId'] = userObj.getRowId()
                                    paymentObj = Payment(paymentInfo)
                                    bookingObj.addPaymentInfo(paymentObj.getRowId())
                                    state = 9
                                    break
                                else:
                                    print('Invalid input!! Try again')
                        else:
                            state = self.navOptions(selection, state)
                else:
                    print('Invalid selection, Please input again')

            #creation of booking object
            while state == 9:
                optionDisplay = Booking.viewUserBookings(userObj)
                pageName = 'Completed Bookings'
                userName = userObj.getFirstName()
                pageNavDict = {'B': 'Go Back', 'O': 'Logout', 'E': 'Exit'}
                displayDict = {'pageName': pageName, 'userName': userName, 'optionDisplay': optionDisplay, 'pageNavDict': pageNavDict, 'state': state}
                # tableHeader =
                self.displayPage(displayDict)
                placeHolder = dict()
                invalidSelectionFlag, selection = self.selectOption(placeHolder, pageNavDict)
                if not invalidSelectionFlag:
                    if selection in pageNavDict:
                        if selection == 'B':
                            state = 2
                        else:
                            state = self.navOptions(selection, state)
                else:
                    print('Invalid selection, Please input again')

        self.state = state
Exemplo n.º 5
0
    def ownerController(self, userObj):
        """
        This method contains all functionality related to the owner along with the flow
            Args:
                - userObj -- User
            Raises:
            Returns:
        """
        state = 2
        while state >= 2:
            while state == 2:
                pageName = 'Owner Home Screen'
                userName = userObj.getFirstName()
                optionDisplay = {
                    '1': 'Manage Halls',
                    '2': 'View Quotation Request',
                    '3': 'Manage Bookings',
                    '4': 'Manage Payments'
                }
                pageNavDict = {'O': 'Logout', 'E': 'Exit'}
                headerDisplay = 'Input key to select corresponding option'
                displayDict = {
                    'pageName': pageName,
                    'userName': userName,
                    'optionDisplay': optionDisplay,
                    'pageNavDict': pageNavDict,
                    'headerDisplay': headerDisplay
                }
                self.displayPage(displayDict)
                invalidSelectionFlag, selection = self.selectOption(
                    optionDisplay, pageNavDict)
                # for navigation menu
                if not invalidSelectionFlag:
                    if selection in pageNavDict:
                        state = self.navOptions(selection, state)
                    elif selection == '1':
                        # take to next state to display hall listing
                        state = 3
                    elif selection == '2':
                        state = 5
                    elif selection == '3':
                        state = 7
                    elif selection == '4':
                        state = 8
                else:
                    print('Invalid selection, Please input again')

            while state == 3:
                optionDisplay = Hall.viewUserHalls(userObj)
                pageName = 'Manage Hall Page'
                userName = userObj.getFirstName()
                pageNavDict = {
                    'O': 'Logout',
                    'E': 'Exit',
                    'B': 'Back',
                    'A': 'Add New Hall'
                }
                headerDisplay = 'Select ID to view corresponding Hall Information and modify'
                displayDict = {
                    'pageName': pageName,
                    'userName': userName,
                    'optionDisplay': optionDisplay,
                    'pageNavDict': pageNavDict,
                    'headerDisplay': headerDisplay
                }
                self.displayPage(displayDict)
                invalidSelectionFlag, selection = self.selectOption(
                    optionDisplay, pageNavDict)
                # for navigation menu
                if not invalidSelectionFlag:
                    if selection in pageNavDict:
                        if selection == 'A':
                            hallExistFlag, hallInfo = self.acceptHallDetails(
                                userObj)
                            # create a user object
                            if hallExistFlag:
                                state = 3
                            else:
                                confirmation = input(
                                    'Confirm Addition Request(Y/N): ')
                                if confirmation.isalpha():
                                    if confirmation.lower() == 'y':
                                        #create object of quotations
                                        hallObj = Hall(hallInfo)
                                    elif confirmation.lower() == 'n':
                                        print('Taking back to previous menu')
                                        time.sleep(1)
                                state = 3
                        if selection == 'B':
                            state = 2
                        state = self.navOptions(selection, state)
                    else:
                        # take to next state to display hall listing
                        state = 4
                else:
                    print('Invalid selection, Please input again')

            while state == 4:
                index = int(selection)
                optionDisplay = Hall.viewHallDetails(index)
                pageName = 'Hall Detail Page'
                userName = userObj.getFirstName()
                pageNavDict = {
                    'M': 'Modify Hall',
                    'D': 'Delete Hall',
                    'B': 'Go Back',
                    'O': 'Logout',
                    'E': 'Exit'
                }
                displayDict = {
                    'pageName': pageName,
                    'userName': userName,
                    'optionDisplay': optionDisplay,
                    'pageNavDict': pageNavDict,
                    'state': state
                }
                self.displayPage(displayDict)
                #placeholder dictionary
                bookHallPage = dict()
                #displayPage('Hall Details', userObj.getFirstName(), hallDetails, navPageDict, state)
                invalidSelectionFlag, selection = self.selectOption(
                    optionDisplay, pageNavDict)
                if not invalidSelectionFlag:
                    if selection in pageNavDict:
                        if selection == 'B':
                            state = 3
                        if selection == 'M':
                            hallExistFlag, hallModify = self.acceptModifyHallDetails(
                                userObj, optionDisplay)
                            # create a user object
                            if not hallExistFlag:
                                hallModify['hallId'] = optionDisplay[0]
                                confirmation = input(
                                    'Confirm Modification Request(Y/N): ')
                                if confirmation.isalpha():
                                    if confirmation.lower() == 'y':
                                        #create object of quotations
                                        hallObj = Hall(hallModify)
                                        hallObj.modifyhall(
                                            optionDisplay[0], hallModify)
                                    elif confirmation.lower() == 'n':
                                        print('Taking back to previous menu')
                                        time.sleep(1)
                            state = 3
                        elif selection == 'D':
                            hallDelete = dict()
                            hallDelete['hallId'] = optionDisplay[0]
                            confirmation = input(
                                'Confirm Delete Request(Y/N): ')
                            if confirmation.isalpha():
                                if confirmation.lower() == 'y':
                                    #create object of quotations
                                    hallObj = Hall(hallDelete)
                                    hallObj.deletehall(optionDisplay[0])
                                elif confirmation.lower() == 'n':
                                    print('Taking back to previous menu')
                                    time.sleep(1)
                            state = 3
                        else:
                            state = self.navOptions(selection, state)
                else:
                    print('Invalid selection, Please input again')

            while state == 5:
                optionDisplay = Quotation.listOwnerQuotationRequests(
                    userObj.getRowId())
                pageName = 'Requested Quotations Page'
                userName = userObj.getFirstName()
                pageNavDict = {'O': 'Logout', 'E': 'Exit', 'B': 'Back'}
                headerDisplay = 'Select ID to Modify Quotation Requests'
                displayDict = {
                    'pageName': pageName,
                    'userName': userName,
                    'optionDisplay': optionDisplay,
                    'pageNavDict': pageNavDict,
                    'headerDisplay': headerDisplay,
                    'state': state
                }
                self.displayPage(displayDict)
                #navPageDict = {'O': 'Logout', 'E': 'Exit', 'B': 'Back'}
                #displayPage('Requested Quotations Page', userObj.getFirstName(), quotationList, navPageDict, state)
                invalidSelectionFlag, selection = self.selectOption(
                    optionDisplay, pageNavDict)
                if not invalidSelectionFlag:
                    if selection == 'B':
                        state = 2
                    elif selection in pageNavDict:
                        state = self.navOptions(selection, state)
                    else:
                        # take to next state to display hall listing
                        state = 6
                else:
                    print('Invalid selection, Please input again')

            while state == 6:
                index = int(selection)
                optionDisplay = Quotation.viewQuotationDetails(index)
                pageName = 'Quotation Details Page'
                userName = userObj.getFirstName()
                if (optionDisplay[5] == 'Pending'):
                    pageNavDict = {
                        'A': 'Accept',
                        'M': 'Modify',
                        'R': 'Reject',
                        'B': 'Go Back',
                        'O': 'Logout',
                        'E': 'Exit'
                    }
                else:
                    pageNavDict = {'B': 'Go Back', 'O': 'Logout', 'E': 'Exit'}
                displayDict = {
                    'pageName': pageName,
                    'userName': userName,
                    'optionDisplay': optionDisplay,
                    'pageNavDict': pageNavDict,
                    'state': state
                }
                self.displayPage(displayDict)
                #displayPage('Quotation Details', userObj.getFirstName(), quotationDetails, navPageDict, state)
                #placeholder dictionary
                placeHolder = dict()
                invalidSelectionFlag, selection = self.selectOption(
                    placeHolder, pageNavDict)
                if not invalidSelectionFlag:
                    if selection in pageNavDict:
                        if selection == 'B':
                            state = 5
                        if selection == 'M':
                            newAmount = input('Enter New Quotation Amount: ')
                            if newAmount.isdigit():
                                confirmation = input(
                                    'Confirm Modification Request(Y/N): ')
                                if confirmation.isalpha():
                                    if confirmation.lower() == 'y':
                                        #create object of quotations
                                        Quotation.changeAmount(
                                            optionDisplay[0], newAmount)
                                    elif confirmation.lower() == 'n':
                                        print('Taking back to previous menu')
                                        time.sleep(1)
                                    state = 5
                            else:
                                print('Please enter a valid value[float only]')
                                selection = index
                                time.sleep(1)
                        elif selection == 'A':
                            confirmation = input(
                                'Confirm Accept Request(Y/N): ')
                            if confirmation.isalpha():
                                if confirmation.lower() == 'y':
                                    #create object of quotations
                                    Quotation.changeStatus(
                                        optionDisplay[0], 'Approved')
                                elif confirmation.lower() == 'n':
                                    print('Taking back to previous menu')
                                    time.sleep(1)
                                state = 5
                        elif selection == 'R':
                            confirmation = input(
                                'Confirm Reject Request(Y/N): ')
                            if confirmation.isalpha():
                                if confirmation.lower() == 'y':
                                    #create object of quotations
                                    Quotation.changeStatus(
                                        optionDisplay[0], 'Rejected')
                                elif confirmation.lower() == 'n':
                                    print('Taking back to previous menu')
                                    time.sleep(1)
                                state = 5
                        else:
                            state = self.navOptions(selection, state)
                else:
                    print('Invalid selection, Please input again')
                    state = 5

            while state == 7:
                optionDisplay = Booking.listOwnerBookings(userObj.getRowId())
                pageName = 'Completed Bookings'
                userName = userObj.getFirstName()
                pageNavDict = {'B': 'Go Back', 'O': 'Logout', 'E': 'Exit'}
                displayDict = {
                    'pageName': pageName,
                    'userName': userName,
                    'optionDisplay': optionDisplay,
                    'pageNavDict': pageNavDict,
                    'state': state
                }
                # tableHeader =
                self.displayPage(displayDict)
                placeHolder = dict()
                invalidSelectionFlag, selection = self.selectOption(
                    placeHolder, pageNavDict)
                if not invalidSelectionFlag:
                    if selection in pageNavDict:
                        if selection == 'B':
                            state = 2
                        else:
                            state = self.navOptions(selection, state)
                else:
                    print('Invalid selection, Please input again')

            while state == 8:
                optionDisplay = Payment.listOwnerPaymentRequests(
                    userObj.getRowId())
                pageName = 'Requested Payments Page'
                userName = userObj.getFirstName()
                pageNavDict = {'O': 'Logout', 'E': 'Exit', 'B': 'Back'}
                headerDisplay = 'Select ID to accept/reject Payment'
                displayDict = {
                    'pageName': pageName,
                    'userName': userName,
                    'optionDisplay': optionDisplay,
                    'pageNavDict': pageNavDict,
                    'headerDisplay': headerDisplay,
                    'state': state
                }
                self.displayPage(displayDict)
                #navPageDict = {'O': 'Logout', 'E': 'Exit', 'B': 'Back'}
                #displayPage('Requested Quotations Page', userObj.getFirstName(), quotationList, navPageDict, state)
                invalidSelectionFlag, selection = self.selectOption(
                    optionDisplay, pageNavDict)
                if not invalidSelectionFlag:
                    if selection == 'B':
                        state = 2
                    elif selection in pageNavDict:
                        state = self.navOptions(selection, state)
                    else:
                        # take to next state to display hall listing
                        state = 9
                else:
                    print('Invalid selection, Please input again')

            while state == 9:
                index = int(selection)
                optionDisplay = Payment.viewPaymentDetails(index)
                pageName = 'Payments Details Page'
                userName = userObj.getFirstName()
                if (optionDisplay[4] == 'Pending'):
                    pageNavDict = {
                        'A': 'Accept',
                        'R': 'Reject',
                        'B': 'Go Back',
                        'O': 'Logout',
                        'E': 'Exit'
                    }
                else:
                    pageNavDict = {'B': 'Go Back', 'O': 'Logout', 'E': 'Exit'}
                displayDict = {
                    'pageName': pageName,
                    'userName': userName,
                    'optionDisplay': optionDisplay,
                    'pageNavDict': pageNavDict,
                    'state': state
                }
                self.displayPage(displayDict)
                #displayPage('Quotation Details', userObj.getFirstName(), quotationDetails, navPageDict, state)
                #placeholder dictionary
                QuotationPage = dict()
                invalidSelectionFlag, selection = self.selectOption(
                    optionDisplay, pageNavDict)
                if not invalidSelectionFlag:
                    if selection in pageNavDict:
                        if selection == 'B':
                            state = 8
                        elif selection == 'A':
                            confirmation = input(
                                'Confirm Accept Request(Y/N): ')
                            if confirmation.isalpha():
                                if confirmation.lower() == 'y':
                                    #create object of quotations
                                    Payment.changeStatus(
                                        optionDisplay[0], 'Approved')
                                    Booking.changeStatus(
                                        optionDisplay[5], 'Confirmed')
                                elif confirmation.lower() == 'n':
                                    print('Taking back to previous menu')
                                    time.sleep(1)
                                state = 8
                        elif selection == 'R':
                            confirmation = input(
                                'Confirm Reject Request(Y/N): ')
                            if confirmation.isalpha():
                                if confirmation.lower() == 'y':
                                    #create object of quotations
                                    Payment.changeStatus(
                                        optionDisplay[0], 'Rejected')
                                    Booking.changeStatus(
                                        optionDisplay[5], 'Declined')
                                elif confirmation.lower() == 'n':
                                    print('Taking back to previous menu')
                                    time.sleep(1)
                                state = 8
                        else:
                            state = self.navOptions(selection, state)
                else:
                    print('Invalid selection, Please input again')

        self.state = state