예제 #1
0
        def submit_ride_form():
            check_user_ride_status=DbManager.get_user_ride_status(self,global_username)
            check_user_ride_status_list = []

            for i in range(len(check_user_ride_status)):
                check_user_ride_status_list.append(check_user_ride_status[i][0])

            if (("PENDING" in check_user_ride_status_list) or ("ACCEPT" in check_user_ride_status_list)or ("RUNNING" in check_user_ride_status_list)):
                alert.showinfo("info", "You have already requested for a ride!")

            else:
                list_of_ride_id = DbManager.get_ride_id(self)
                customer_ride_data = []
                customer_ride_data.append(current_location_textfield_entry.get())
                customer_ride_data.append(destination_location_textfield_entry.get())
                customer_ride_data.append(num_of_people_textfield_entry.get())
                customer_ride_data.append(num_of_luggage_textfield_entry.get())
                customer_ride_data.append(type_of_ride_Selector.get())
                customer_ride_data.append(global_username)

                while (True):
                    current_ride_id = username.upper() + str(random.randint(0, 10000))
                    if (list_of_ride_id == 0):
                        customer_ride_data.append(current_ride_id)
                        break
                    elif (current_ride_id not in list_of_ride_id):
                        customer_ride_data.append(current_ride_id)
                        break

                DbManager.submitted_rides(self, customer_ride_data)
                Thread(target=RideForm.timer_to_search_drivers,args=(self,global_username,)).start()
                alert.showinfo("info", "Ride submitted succesfully")

            ride_form_window.destroy()
            customer_window.deiconify()
예제 #2
0
 def accept_result():
     DbManager.modify_ride_distribution(self, ride_id[0],
                                        "accept", drivername)
     individual_ride_window.destroy()
     ride_details = DbManager.fetch_ride_details(
         self, ride_id[0])
     user_phone_number = DbManager.fetch_user_phone_no(
         self, ride_details[5])
     Ride_acceptance_window.accepted_ride_window(
         self, ride_details, user_phone_number)
예제 #3
0
 def start_ride():
     Thread(target=Ride_acceptance_window.reached_location,
            args=(
                self,
                ride_details,
                user_details,
            )).start()
     start_ride_window.destroy()
     DbManager.modify_ride_distribution_after_verification(
         self, "ride_started", ride_details[6])
     driver_winodw_mainscreen.deiconify()
예제 #4
0
 def toggle():
     if availability_button.config('text')[-1] == 'Available':
         availability_button.config(text='Un-Available')
         current_status_of_driver = "Un-Available"
         DbManager.modify_driver_availability(self, global_username,
                                              current_status_of_driver)
     else:
         availability_button.config(text='Available')
         current_status_of_driver = "Available"
         DbManager.modify_driver_availability(self, global_username,
                                              current_status_of_driver)
예제 #5
0
 def reached_location(self, ride_details):
     count = 0
     while (True):
         time.sleep(1)
         count += 1
         if (count == 20):
             alert.showinfo(
                 "Info", "Hey ," + " You Reached destination!" +
                 "\nRIDE ID: " + ride_details[6])
             DbManager.modify_ride_distribution_after_verification(
                 self, "completed", ride_details[6])
             break
        def verify_user():

            login_result,usertype,firstname,lastname = DbManager.validate_credentials(self,username_textfield_entry.get(),passwrod_textfield_entry.get())

            if(login_result==True):
                DbManager.active_users(self,username_textfield_entry.get(),passwrod_textfield_entry.get())
                self.navigate_to_respective_screen(login_window,usertype,username_textfield_entry.get(),firstname,lastname)

            else:
                alert.showinfo("info","Invalid credentials")
                username_textfield_entry.delete(0,'end')
                passwrod_textfield_entry.delete(0,'end')
예제 #7
0
 def get_pending_rides_list():
     availability_status = DbManager.check_driver_availability(
         self, global_username)
     if (availability_status != 0):
         driver_status = DbManager.verify_driver_status(self, username)
         if (driver_status == 0):
             Ride_acceptance_window.ride_window(self, username)
         else:
             alert.showinfo("info",
                            "Driver has already accepted a ride")
     else:
         alert.showinfo("Info",
                        "Turn on availabilty before accepting rides!")
예제 #8
0
 def timer_to_search_drivers(self,username):
     count=0
     while(True):
         time.sleep(1)
         count+=1
         if(count==30):
             status=DbManager.get_user_ride_status_for_timer(self,username)
             if(status==1):
                 DbManager.remove_ride_no_driver_found(self,username)
                 alert.showinfo("Info","No Drivers found. Try after some time!")
                 break
             else:
                 break
        def on_submission():
            user_data=[]
            user_data.append(firstname_textfield_entry.get())
            user_data.append(lastname_textfield_entry.get())
            user_data.append(address_textfield_entry.get())
            user_data.append(contact_textfield_entry.get())
            user_data.append(emailid_textfield_entry.get())
            user_data.append(radio_button_selector.get())
            user_data.append(username_textfield_entry.get())
            user_data.append(password_textfield_entry.get())

            DbManager.insertuser(self,user_data)
            alert.showinfo("Info", "Registered Successfully")
            register_window.destroy()
            Login_Screen.LoginPage.login_screen(self)
예제 #10
0
    def customer_ride_history_window(self, username):
        ride_history = DbManager.fetch_ride_details_customer_history(self, username)

        if(ride_history!=0):

            if(ride_history[0][7]!="PENDING"):

                customer_ride_history_window = Tk.Tk()
                customer_ride_history_window.title("Ride History")

                listbox = Tk.Listbox(customer_ride_history_window, width=30, height=20)
                listbox.pack(side=Tk.LEFT, fill=Tk.BOTH)
                scrollbar = Tk.Scrollbar(customer_ride_history_window)
                scrollbar.pack(side=Tk.RIGHT, fill=Tk.BOTH)


                for i in range(len(ride_history)):

                    listbox.insert(Tk.END, "RIDE ID:    " + ride_history[i][6])
                    listbox.insert(Tk.END, "DESTINATION:    " + ride_history[i][1])
                    listbox.insert(Tk.END, "DRIVER NAME:    " + ride_history[i][8])
                    listbox.insert(Tk.END, "RIDE STATUS:    " + ride_history[i][7])
                    listbox.insert(Tk.END, "\n")


                listbox.config(yscrollcommand=scrollbar.set)
                scrollbar.config(command=listbox.yview)
                customer_ride_history_window.mainloop()
            else:
                alert.showinfo("info","No History Avaialble")
        else:
            alert.showinfo("info","No History Avaialble")
예제 #11
0
    def repeat_ride_window_customer(self,customer_window,username):

        ride_history_destinations = DbManager.fetch_customer_completed_destinations(self, username)

        if(ride_history_destinations==0):
            alert.showinfo("info","No Completed rides available!")
        else:

            repeat_ride_window = Tk.Tk()
            repeat_ride_window.title("Repeat Ride")
            repeat_ride_window.geometry("300x300")
            destination_listbox = Tk.Listbox(repeat_ride_window, width=35, height=12)
            destination_listbox.pack(pady=25)

            for i in range(len(ride_history_destinations)):
                destination_listbox.insert(Tk.END, ride_history_destinations[i][0])
                destination_listbox.insert(Tk.END, "")

            def repeat_ride():
                if(destination_listbox.get(Tk.ANCHOR)!=""):
                    ride_history_repeat = DbManager.fetch_ride_details_customer_repeat(self, global_username,destination_listbox.get(Tk.ANCHOR))
                    RideForm.ride_form_for_repeat(self,customer_window,username,ride_history_repeat,repeat_ride_window)
                else:
                    alert.showinfo("Info","Select the destination")

            my_button = Tk.Button(repeat_ride_window, text="Repeat Ride", command=repeat_ride, width=13, height=2)
            my_button.place(x=80, y=250)

            global my_label
            my_label = Tk.Label(repeat_ride_window, text=" ")
            repeat_ride_window.mainloop()
예제 #12
0
    def ride_history_window(self, username):

        ride_history = DbManager.fetch_rides_distribution_of_driver(
            self, username)

        if (len(ride_history) != 0):

            ride_history_window = Tk.Tk()
            ride_history_window.title("Ride History")

            listbox = Tk.Listbox(ride_history_window, width=30, height=20)

            listbox.pack(side=Tk.LEFT, fill=Tk.BOTH)
            scrollbar = Tk.Scrollbar(ride_history_window)
            scrollbar.pack(side=Tk.RIGHT, fill=Tk.BOTH)

            for i in range(len(ride_history)):
                listbox.insert(Tk.END, "RIDE ID:    " + ride_history[i][1])
                if "REJECT" in ride_history[i][2]:
                    listbox.insert(Tk.END,
                                   "RIDE STATUS:    " + ride_history[i][2][:6])
                else:
                    listbox.insert(Tk.END,
                                   "RIDE STATUS:    " + ride_history[i][2])
                listbox.insert(Tk.END, "\n")

            listbox.config(yscrollcommand=scrollbar.set)
            scrollbar.config(command=listbox.yview)

            ride_history_window.mainloop()

        else:
            alert.showinfo("Info", "No History available")
예제 #13
0
        def repeat_ride_window():
            driver_availability = DbManager.check_driver_availability(self, "customer")

            if (driver_availability == 0):
                alert.showinfo("info", "No Drivers Available! ")
            else:
                CustomerScreen.repeat_ride_window_customer(self, customer_window, global_username)
예제 #14
0
        def get_ride_form():
            driver_availability=DbManager.check_driver_availability(self,"customer")

            if(driver_availability==0):
                alert.showinfo("info", "No Drivers Available! ")
            else:
                customer_window.withdraw()
                RideForm.ride_form(self,customer_window,global_username)
예제 #15
0
        def verify_customer():

            ride_id_to_verify_customer = DbManager.get_ride_id_to_verify_customer(
                self, username)

            if (ride_id_to_verify_customer == 0):
                ride_id_to_verify_customer_status = DbManager.fetch_ride_status_verification(
                    self, username)
                if (ride_id_to_verify_customer_status == 0
                        or ride_id_to_verify_customer_status[0][0]
                        == "COMPLETED"):
                    alert.showinfo("Info", "No rides accepted to verify!")
                elif (ride_id_to_verify_customer_status[0][0] == "RUNNING"):
                    alert.showinfo("Info", "You are already running a ride!")

            else:
                ride_details = DbManager.fetch_ride_details(
                    self, ride_id_to_verify_customer[0][0])
                user_Details = DbManager.fetch_user_details(
                    self, ride_details[5])
                driver_window.withdraw()
                Ride_acceptance_window.verify_customer_window(
                    self, ride_details, user_Details, driver_window)
예제 #16
0
    def ride_status_window(self,ride_details):

        if(ride_details!=0):

            if ride_details[0][7]=="PENDING":
                alert.showinfo("Info","Searching for the drivers.\nPlease wait for few seconds")
            else:
                def ok_clicked():
                    customer_ride_status_window.destroy()

                customer_ride_status_window = Tk.Tk()
                customer_ride_status_window.geometry("500x330")
                customer_ride_status_window.title("Ride")

                ride_info = "RIDE ID:   "+ride_details[0][6]+"\nPICK-UP LOCATION:  "+ride_details[0][0] +"\nDESTINATION:  "+ride_details[0][1] +"\n" +"NO OF PEOPLE:   " +ride_details[0][2] + "\n" +"LUGGAGE QUANTITY:  "+ ride_details[0][3] \
                            + "\n" + "RIDE TYPE:    "+ride_details[0][4]+"\n\n"

                driver_details=DbManager.fetch_user_details(self,ride_details[0][8])
                driver_info="Driver Name:   "+driver_details[0]+", "+driver_details[1]+"\n" +"Driver Contact No:    "+ str(driver_details[3])
                ride_status_info=ride_info+"\n"+driver_info

                status = Tk.Label(customer_ride_status_window, text="STATUS:    "+ride_details[0][7])
                status.config(font=("Courier", 20))
                status.place(x=70, y=40)

                heading = Tk.Label(customer_ride_status_window, text="Ride Status")
                heading.place(x=220, y=10)

                ride_info_field = Tk.Label(customer_ride_status_window, text=ride_status_info)
                ride_info_field.place(x=140, y=90)

                ok_button = Tk.Button(customer_ride_status_window, text="OK", width=15, height=2,command=ok_clicked)
                ok_button.place(x=180, y=270)

                customer_ride_status_window.mainloop()

        else:
            alert.showinfo("Info","No ride booked!")
예제 #17
0
 def not_verified_customer_msg():
     DbManager.modify_ride_distribution_after_verification(
         self, "notverified", ride_details[6])
     verify_customer_window.destroy()
     driver_winodw_mainscreen.deiconify()
     alert.showinfo("info", "Verification Failed!")
예제 #18
0
 def logout():
     DbManager.remove_active_user(self, global_username)
     driver_window.destroy()
     Login_Screen.LoginPage.login_screen(self)
예제 #19
0
 def on_closing():
     if alert.askokcancel("Quit", "Do you want to quit?"):
         DbManager.remove_active_user(self, global_username)
         driver_window.destroy()
         Login_Screen.LoginPage.login_screen(self)
예제 #20
0
 def repeat_ride():
     if(destination_listbox.get(Tk.ANCHOR)!=""):
         ride_history_repeat = DbManager.fetch_ride_details_customer_repeat(self, global_username,destination_listbox.get(Tk.ANCHOR))
         RideForm.ride_form_for_repeat(self,customer_window,username,ride_history_repeat,repeat_ride_window)
     else:
         alert.showinfo("Info","Select the destination")
예제 #21
0
 def reject_result():
     DbManager.modify_ride_distribution(self, ride_id[0],
                                        "reject", drivername)
     individual_ride_window.destroy()
     Ride_acceptance_window.ride_window(self, drivername)
예제 #22
0
 def ride_status_window():
     ride_history = DbManager.fetch_ride_details_customer_ride_status(self, global_username)
     CustomerScreen.ride_status_window(self,ride_history)
예제 #23
0
    def ride_window(self, drivername):

        ride_id = []
        ride_id_verification = DbManager.fetch_pending_rides_for_distribution_rejected_verification(
            self)
        ride_id_rejected = DbManager.fetch_pending_rides_for_distribution_rejected(
            self, drivername)

        if ride_id_verification != 0:
            for i in ride_id_verification:
                ride_id.append(i[0])

            if ride_id_rejected != 0:
                for i in ride_id_rejected:
                    if i[0] in ride_id:
                        ride_id.remove(i[0])

                if (len(ride_id) == 0):
                    ride_id = 0

            if (ride_id == 0):
                alert.showinfo("info", "No Rides Available! ")

            else:
                pending_rides = DbManager.fetch_pending_rides(self, ride_id[0])

                def accept_result():
                    DbManager.modify_ride_distribution(self, ride_id[0],
                                                       "accept", drivername)
                    individual_ride_window.destroy()
                    ride_details = DbManager.fetch_ride_details(
                        self, ride_id[0])
                    user_phone_number = DbManager.fetch_user_phone_no(
                        self, ride_details[5])
                    Ride_acceptance_window.accepted_ride_window(
                        self, ride_details, user_phone_number)

                def reject_result():
                    DbManager.modify_ride_distribution(self, ride_id[0],
                                                       "reject", drivername)
                    individual_ride_window.destroy()
                    Ride_acceptance_window.ride_window(self, drivername)

                individual_ride_window = Tk.Tk()
                individual_ride_window.geometry("250x200")
                individual_ride_window.title("Ride")

                ride_info = pending_rides[0] + "\n" + pending_rides[1] + "\n" + pending_rides[2] + "\n" + \
                            pending_rides[3] + "\n" + pending_rides[4]

                heading = Tk.Label(individual_ride_window,
                                   text="Ride Information")
                heading.place(x=70, y=10)

                ride_info_field = Tk.Label(individual_ride_window,
                                           text=ride_info)
                ride_info_field.place(x=90, y=40)

                e1 = Tk.Button(individual_ride_window,
                               text="accept",
                               width=10,
                               height=1,
                               command=accept_result)
                e2 = Tk.Button(individual_ride_window,
                               text="reject",
                               width=10,
                               height=1,
                               command=reject_result)

                e1.place(x=20, y=150)
                e2.place(x=120, y=150)

                individual_ride_window.mainloop()

        else:
            alert.showinfo("info", "No Rides Available! ")