def show_ratings(): db = db_connect() return render_template("ratings.html", databaseitems=db.select_menu_items(), numbers=db.select_menu_rating_numbers(), menu_items=db.select_menu())
def top5_user(user): db = db_connect() user_orders = db.select_user_orders(user) top5 = [] for x in range(len(user_orders)): # for every order a = strip_orders(user_orders[x][2]) # get the string array print("A") print(a) for y in range(len(a)): # for every item in the string array if any(a[y][0] in c for c in top5): top5[next( (i for i, sublist in enumerate(top5) if a[y][0] in sublist), -1)][2] += int(a[y][1]) else: # int a top5.append( [a[y][0], db.select_menu_pic(a[y][0])[0], int(a[y][1])]) top5 = sorted(top5, key=lambda z: z[2], reverse=True) return top5
def add_menu_item(chef): db = db_connect() item_name = request.form['new_item'] item_price = request.form['new_price'] description = request.form['description'] chef_id = session.get('user') menu_id = db.select_menu_id(chef_id) print(chef_id) print(menu_id) #menu_id = (menu_id) print(item_price) print(item_name) if menu_id[0] == None: menu_id = str(0) else: menu_id = str(int(menu_id[0]) + 1) db.insert_menu(chef_id, menu_id, item_name, item_price, "", description, "0") #zero for order_count return view_chef_page()
def view_management_page(): db = db_connect() unregistered_users = db.select_all_unregistered_users() registered = db.select_all_registered_users() hired_employees = db.select_all_hired_employees() unhired_employees = db.select_all_pending_employees() list_of_complaints = db.select_all_pending_complaints() list_of_compliments = db.select_all_pending_compliments() # this function runs everytime manager opens his personal page # we use this to find out if how long its been since a chef's item has last been ordered. # if its been 3 or more days, we indicate that and let the manager know for employee in hired_employees: emp_id = employee[0] # only check the time if the employee is a chef if emp_id[0] == 'C': time_last_ordered = db.select_time_last_ordered(emp_id)[0] get_time_elaspsed_between_orders(time_last_ordered) return render_template("loginMANAGER.html", registered_users=registered, unregistered=unregistered_users, hired_employees=hired_employees, unhired_employees=unhired_employees, complaints=list_of_complaints, compliments=list_of_compliments)
def submit_rating(): db = db_connect() rating = request.form["rating"] chef_id = request.values["chef_id"] menu_id = request.values["menu_id"] if rating != '': db.insert_ratings(chef_id, menu_id, rating) average_rating = db.select_menu_rating(chef_id, menu_id)[0] number_of_ratings = db.select_menu_rating_quantity(chef_id, menu_id)[0] # if the chef has consistently low ratings, we demote them. Below are the conditions # to check if the ratings are "consistently low" if float(rating) <= 2 and float(average_rating) <= 1.5 and float( number_of_ratings) > 15: try: db.demote_employee(chef_id) # if the employee has been demoted twice, fire him print(db.check_demotions())[0] if db.check_demotions(chef_id)[0] >= 2: db.fire_employee(chef_id) except: flash("that chef no longer works here") redirect("/") else: flash("enter a number") return show_ratings()
def deposit_money(): db = db_connect() amount = request.form["money"] print(amount) db.inc_acc_funds(amount, session.get('user')) flash("Funds Deposited: $" + amount) return view_user_page()
def view_chef_page(): db = db_connect() print(session.get('user')) chef_name = db.select_chef_session(session.get('user')) print(chef_name) menu = db.select_chef_menu() return render_template("loginCHEF.html", menu_info=menu, chef=chef_name)
def empty_cart(): db = db_connect() user = session.get("user") try: db.empty_cart(user) except: flash("you need to login") return showLogIn() return showMenu()
def demote(empl_name): #empl_is actually emp_id! db = db_connect() db.add_demotions(empl_name) print(db.check_demotions(empl_name)[0]) try: if db.check_demotions(empl_name)[0] > 1: db.fire_employee(empl_name) except: return view_management_page() return view_management_page()
def editMenu(curr_item, curr_price): db = db_connect() new_item = request.form['_menu'] new_price = request.form['price'] print(new_item) print(curr_item) print(curr_price) db.update_menu_item(new_item, curr_item) db.update_menu_price(new_price, curr_item) return view_chef_page()
def sign_up(): db = db_connect() # read the values from the UI _firstName = request.form['first_name'] _lastName = request.form['last_name'] _userName = request.form['user_name'] _password = request.form['password'] _address = request.form['address'] _city = request.form['city'] _state = request.form['state'] _postal = request.form['postal'] _apt = request.form['apt'] _phone = request.form['phone'] # Check if username exists user_check = db.select_user_info(_userName) # Checks if the address is valid for geopy try: db.eval_geo_coords(_address, _city, _postal) except: # Note This Captures All Exceptiosn flash("Make Sure Your Address is Correct", "error") return showSignUp() # If the username exists if user_check and user_check[0][0] == _userName: flash("Sorry, Username Exists", 'error') return showSignUp() # If the key fields are not entered elif not _firstName or not _lastName or not _userName or not _password or not _address or not _city or not _state: flash("Please Enter All Info with Asterisks") return showSignUp() # Insert User else: db.insert_users(_userName, _firstName, _lastName, _password, _address, _city, _state, _postal, _apt, _phone, acc_funds=0) flash("Your Account is Now Pending Manager Approval.") flash("Please send a $100 check to us so we can approve.") return index()
def view_delivery_page(): db = db_connect() # change all_orders later.... # contents of delivery info. delivery_info = db.select_incomplete_delivery_info() all_compl_delivery = db.select_completed_delivery_info() user_info = db.select_all_registered_users() print("COMPLETED") print(all_compl_delivery) print(user_info) return render_template("loginDELIVERY.html", all_delivery=delivery_info, all_users=user_info, all_compl_delivery=all_compl_delivery)
def accept_complaint(complaint_id, emp_id): db = db_connect() db.confirm_complaint(complaint_id) db.add_complaint(emp_id) employee = emp_id # check how many complaints there are against this employee # if 3 or greater, demote the employee if db.check_complaints(employee)[0] > 2: db.demote_employee(employee) # if the employee has been demoted twice, fire him if int(db.check_demotions(employee)[0]) >= 2: db.fire_employee(employee) return view_management_page()
def login(): db = db_connect() # Get details from the user user_id = request.form['username'] password = request.form['password'] # Get details from the db user_check = db.select_user_info(user_id) empl_check = db.select_employee_info(user_id) # Check user details against db if user_check and user_check[0][3] == password: # only let the user login if the manager has confirmed his registration if int(db.is_registered(user_id)[0]) == 1: session["user"] = user_id session["logged_in"] = True session["role"] = "user" return view_user_page() # user is not registered else: flash("A manager must register you first!") flash("Be Sure to send your $100 Check :)") return showLogIn() if empl_check and empl_check[0][0] == 'M' and empl_check[1] == password: session["user"] = user_id session["logged_in"] = True session["role"] = "manager" return view_management_page() if empl_check and empl_check[0][0] == 'C' and empl_check[1] == password: session["user"] = user_id session["logged_in"] = True session["role"] = "chef" return view_chef_page() if empl_check and empl_check[0][0] == 'D' and empl_check[1] == password: session["user"] = user_id session["logged_in"] = True session["role"] = "deliverer" return view_delivery_page() else: flash("Login Failed :(") return showLogIn()
def delivery_rating(order_id): #print("hello") print(order_id) order_id = order_id[ 0] #for some reason order_id returns a number followed by a " e.g 1" db = db_connect() status = db.select_order_status(order_id) print(status[0]) if int(status[0]) == 0: flash("Your order has not been delivered yet!") else: rating = request.form["delivery_rating"] db.update_delivery_rating(order_id, rating) flash("Thank you for rating!") return view_user_page()
def showMenu(): db = db_connect() try: items_in_cart = db.select_user_cart(session.get("user")) except: items_in_cart = [] total_price = 0 for item in items_in_cart: item_price = db.select_menu_price(item[1], item[2]) # total price so far = price * quantity total_price += item_price[0] * item[4] return render_template( 'Menu.html', databaseitems=db.select_menu_items(), item_description=db.select_menu_items_description(), numbers=db.select_menu_rating_numbers(), menu_items=db.select_menu(), cart=items_in_cart, sum_of_items=total_price, user_id=session.get("user") ) #Lenny added the item_description stuff here, I may be doing this wrong#
def accept_compliment(compliment_id, emp_id): db = db_connect() db.confirm_compliment(compliment_id) employee = emp_id db.increment_compliment_count(emp_id) #if int(db.select_employee_info(emp_id)[17]) > 0: # db.decrease_complaint(emp_id) # if a customer is customer is VIP, their compliments count twice as much is_user_VIP = db.select_user_VIP_status(session.get("user")) if is_user_VIP == 1: db.increment_compliment_count(emp_id) print(db.check_compliments(employee)) if int(db.check_compliments(employee)[0]) > 2: db.promote_employee(employee) if int(db.check_complaints(emp_id)[0]) > 0: db.decrement_complaint(employee) db.reset_compliments(emp_id) #reset compliments once promoted return view_management_page()
def decline_complaint(complaint_id, user_id): db = db_connect() print(complaint_id) user = db.select_userid_complaints(complaint_id) print(user) db.add_warning(user[0]) db.delete_complaint(complaint_id) #print(db.select_warnings(user[0])) #if user is VIP and has 2 warnings, demote status, and clear cash spent + order count if db.select_user_VIP_status( user[0])[0] == '1' and db.select_warnings(user[0])[0] > 1: db.update_VIP_status(user[0], "0") db.clear_warnings(user[0]) db.reset_cash_spent(user[0]) db.reset_order_count(user[0]) #if regular user and has 3 warnings, deregister, and remove warnings. if db.select_user_VIP_status( user[0])[0] == '0' and db.select_warnings(user[0])[0] > 2: db.deregister(user[0]) db.clear_warnings(user[0]) return view_management_page()
def submit_complaint(): db = db_connect() # insert_complaints function needs emp_id not name so we convert it here employee = request.form.get("employee") employee = employee.strip().split(" ") emp_fname = str(employee[0]) if len(employee) > 1: emp_lname = employee[1] user = session.get("user") complaint = request.form.get("complaint") try: emp_id = db.select_employee_id_from_name(emp_fname, emp_lname)[0] db.insert_complaints(user, emp_id, complaint) except: print("failed") flash("Submission failed") return render_template("complaints.html", employees=db.select_all_hired_employees()) return redirect("/")
def view_user_page(): db = db_connect() user_info = db.select_user_info(session.get("user"))[0] # user_top_five = db.select_top5_rated() -- wait to orders is done #order_status = db.select_user_order_status(session.get("user")) #print(order_status) #orders = db.select_user_orders(session.get("user")) #print("order1 {}".format(orders)) orders = db.select_join_orders_status(session.get("user")) warnings = db.select_warnings(session.get('user')) print(warnings) #order = orders[0]#helps the indexing # Calculate Top 5 Dishes Ordered - CHIN # FOR USER, SAY YOUR TOP MOST ORDERED DISH - what if you ordered less than 5 dishes? top_five_all = db.select_top5_rated() top_five_user = top5_user(session.get("user")) i = 0 while len(top_five_user) < 5: top_five_user.append(top_five_all[i]) i += 1 top_five = top_five_user print(top_five) # top 5 is most popular # for registered and VIP = depends on their history return render_template("loginUSER.html", warnings=warnings, top_five=top_five, orders=orders, user_info=user_info) # order_status = order_status)
def issue_warning(order_num): db = db_connect() db.add_cust_warning(order_num) print(order_num) #now update warnings in user table #get user first! user = db.select_user_delivery(order_num) print(user[0]) db.add_warning(user[0]) print(db.select_warnings(user[0])) # if user is VIP and has 2 warnings, demote status, and clear cash spent + order count if db.select_user_VIP_status( user[0])[0] == '1' and db.select_warnings(user[0])[0] > 1: db.update_VIP_status(user[0], "0") db.clear_warnings(user[0]) db.reset_cash_spent(user[0]) db.reset_order_count(user[0]) # if regular user and has 3 warnings, deregister, and remove warnings. if db.select_user_VIP_status( user[0])[0] == '0' and db.select_warnings(user[0])[0] > 2: db.deregister(user[0]) db.clear_warnings(user[0]) flash("**Warning Issued**", 'error') return view_delivery_page()
def add_to_cart(): db = db_connect() # taken from menu form list_of_quantities = request.form.getlist("quantity") menu_items = db.select_menu() # loop through quantity list and list of menu items simultaneously # the index value value should match up, so the first quantity should be referring to # the first quantity in list of menu for count, menu_item in zip(list_of_quantities, menu_items): # if the quantity from the menu form is not empty we convert it to an integer and # insert it into the cart if count != '': quantity = int(count) try: db.insert_cart_items(session.get("user"), menu_item[0], menu_item[2], menu_item[3], quantity) except: flash("You need to login to do that") return showLogIn() return showMenu()
def add_warning(user_id): db = db_connect() db.update_warnings(user_id) return view_management_page()
def promote(empl_name): db = db_connect() db.promote_employee(empl_name) return view_management_page()
def downgrade(user_id): db = db_connect() db.update_VIP_status(user_id, "0") return view_management_page()
def fire(empl_name): db = db_connect() db.fire_employee(empl_name) return view_management_page()
def decline_user(user): db = db_connect() db.delete_account(user) return view_management_page()
def decline_compliment(compliment_id, user_id): db = db_connect() db.delete_compliment(compliment_id) return view_management_page()
def delete_account(): db = db_connect() user = session.get('user') db.delete_account(user) return render_template('index.html')
def deregister(user_id): db = db_connect() db.deregister(user_id) return view_management_page()