def send_vendor_complain(): if 'id' in session: data = request.args complaint = Complaints.query\ .filter_by(complain_id=data["complain_id"]).first() ven = Vendor.query.filter_by(vendor_id=data["vendor_id"]) complaint.send_vendor_status = True try: db.session.commit() message_title = "Complaint Received" message_body = f"A complaint has been received of order id: { complaint.order_id }, Complaint ID: { complaint.complain_id }" result = send_push_vendor(message_title, message_body, ven.device_id) flash("Complain sended to vendor", "success") return redirect(url_for('Admin.show_complains')) except Exception as e: print(e) db.session.rollback() flash("Error occured while sending, Please try again!", "warning") return redirect(url_for('Admin.show_complains')) flash("You are not authorised", "danger") return redirect(url_for('Admin.log_in'))
def pickup_order(current_user): if request.args: data = request.args.get('order_id') new_orders = Ongoing_order.query.filter_by(order_id=data)\ .first() new_orders.pickup_status = True try: cust = Customer.query\ .filter_by(customer_id=new_orders.customer_id).first() ven = Vendor.query.filter_by(vendor_id=new_orders.vendor_details)\ .first() customer_message_title = "Order Picked Up By Delivery Boy" customer_message_body = f"Your order id: { new_orders.order_id }, has been picked up by: { current_user.name }!!" vendor_message_title = "Order Picked Up By Delivery Boy" vendor_message_body = f"Order id: { new_orders.order_id }, has been picked up by driver id: { current_user.driver_id }!!" res_customer = send_push_customer(customer_message_title, customer_message_body, cust.device_id) res_vendor = send_push_vendor(vendor_message_title, vendor_message_body, ven.device_id) db.session.commit() return jsonify({ "success": "1", "message": "Order Picked Up", "cust_noti": res_customer, "ven_noti": res_vendor }) except Exception as e: print(e) db.session.rollback() return jsonify({ "success": "0", "message": "could not be Order Picked Up" }) return jsonify({"success": "0", "message": "data sent not correct format"})
def cancel_order(current_user): if request.args: data = request.args.get('order_id') new_orders = Ongoing_order.query.filter_by(order_id=data)\ .first() new_orders_one = New_order.query.filter_by(order_id=data)\ .first() try: if new_orders: ven = Vendor.query\ .filter_by(vendor_id=new_orders.vendor_details)\ .first() elif new_orders_one: ven = Vendor.query\ .filter_by(vendor_id=new_orders_one.vendor_details)\ .first() if new_orders: customer_message_title = "Order Declined" customer_message_body = f"Your order id: { new_orders.order_id }, has been cancelled by you!!" vendor_message_title = "Order Declined" vendor_message_body = f"Order id: { new_orders.order_id }, has been cancelled by the customer!!" elif new_orders_one: customer_message_title = "Order Declined" customer_message_body = f"Your order id: { new_orders_one.order_id }, has been cancelled by you!!" vendor_message_title = "Order Declined" vendor_message_body = f"Order id: { new_orders_one.order_id }, has been cancelled by the customer!!" res_customer = send_push_customer(customer_message_title, customer_message_body, current_user.device_id) res_vendor = send_push_vendor(vendor_message_title, vendor_message_body, ven.device_id) if new_orders: db.session.delete(new_orders) elif new_orders_one: db.session.delete(new_orders_one) db.session.commit() return jsonify({ "success": "1", "message": "Order Cancelled", "cust_noti": res_customer, "ven_noti": res_vendor }) except Exception as e: print(e) db.session.rollback() return jsonify({ "success": "0", "message": "could not be cancelled" }) return jsonify({"success": "0", "message": "data sent not correct format"})
def order_new(current_user): if request.is_json: data = request.get_json() near_vendor = select_vendor(current_user.latitude, current_user.longitude, current_user.const_city) output = [] amt = [] for i in range(0, len(data)): if i == 0: order_data = {} order_data["total_amount"] = data[i]["total_amount"] order_data["delivery_method"] = data[i]["delivery_method"] else: product_data = {} product_data["product_id"] = data[i]["product_id"] product_data["quantity"] = int(data[i]["quantity"]) product_data["total_price"] = int(data[i]["total_price"]) amt.append(int(data[i]["total_price"])) output.append(product_data) alphabet = string.ascii_letters + string.digits order_id = ''.join(random.choice(alphabet) for i in range(7)) if len(near_vendor) == 1: vendor_id = near_vendor[0]["vendor_id"] else: for z in range(len(near_vendor)): ven = Vendor.query\ .filter_by(vendor_id=near_vendor[z]["vendor_id"]).first() product_list = [] products = Vendor_products.query.filter_by(vendor=ven).all() for a in products: if a.product_id not in product_list: product_list.append(a.product_id) if output[0]["product_id"] not in product_list: continue else: item = Vendor_products.query\ .filter_by(vendor_details=near_vendor[z]["vendor_id"], product_id=output[0]["product_id"]).first() if item.available_status is True: continue else: vendor_id = near_vendor[z]["vendor_id"] break address = str(current_user.delivery_house_no) + ", " + str( current_user.delivery_landmark) + ", " + str( current_user.delivery_locality) + ", " + str( current_user.delivery_city) + ", " + str( current_user.delivery_state) + " " + str( current_user.delivery_pincode) if order_data["delivery_method"] == "default": new = New_order(order_id=order_id, customer_id=current_user.customer_id, delivery_address=address, bill=int(sum(amt)), total_bill=round(float( order_data["total_amount"])), vendor_details=vendor_id) else: new = New_order(order_id=order_id, customer_id=current_user.customer_id, delivery_address=address, delivery_method=order_data["delivery_method"], bill=int(sum(amt)), total_bill=int(order_data["total_amount"]), vendor_details=vendor_id) db.session.add(new) for y in range(0, len(output)): order_products = New_order_products( product_id=output[y]["product_id"], quantity=output[y]["quantity"], total_price=output[y]["total_price"], order=order_id) prev = Cart.query\ .filter_by(customer_details=current_user.customer_id, product_id=output[y]["product_id"]).first() db.session.add(order_products) db.session.delete(prev) try: db.session.commit() ven = Vendor.query\ .filter_by(vendor_id=vendor_id).first() customer_message_title = "Order Placed" customer_message_body = f"Your order id: { order_id }, has been placed and is pending approval from your nearest vendor" vendor_message_title = "Order Received" vendor_message_body = f"order id: { order_id } received,Please open new orders in app to view details" customer_res = send_push_customer(customer_message_title, customer_message_body, current_user.device_id) vendor_res = send_push_vendor(vendor_message_title, vendor_message_body, ven.device_id) return jsonify({ "success": "1", "Order_Added": order_id, "cust_noti": customer_res, "ven_noti": vendor_res }) except Exception as e: print(e) db.session.rollback() return jsonify({"success": "0", "Order_Added": "failed"}) return jsonify({"succes": "0", "message": "data sent not correct format"})
def vendor_order_update_change(current_user): data = request.get_json() output = [] for i in range(0, len(data)): if i == 0: order_data = {} order_data["order_id"] = data[i]["order_id"] order_data["delivery_boy_id"] = data[i]["driver_id"] order_data["bill"] = data[i]["bill"] order_data["total_bill"] = data[i]["total_bill"] order_data["status"] = data[i]["status"] else: product_data = {} product_data["product_id"] = data[i]["product_id"] product_data["quantity"] = int(data[i]["quantity"]) product_data["total_price"] = int(data[i]["total_price"]) output.append(product_data) new_orders = New_order.query\ .filter_by(order_id=order_data["order_id"])\ .first() if order_data["status"] == '1' and data["driver_id"] != '': new_orders.status = True curr_order = Ongoing_order( order_id=new_orders.order_id, customer_id=new_orders.customer_id, delivery_address=new_orders.delivery_address, delivery_boy_id=order_data["delivery_boy_id"], bill=int(order_data["bill"]), total_bill=int(order_data["total_bill"]), delivery_method=new_orders.delivery_method, vendor_details=new_orders.vendor_details) db.session.add(curr_order) for y in output: order_products = Ongoing_order_products( product_id=y["product_id"], quantity=y["quantity"], total_price=y["total_price"], order=order_data["order_id"]) db.session.add(order_products) try: db.session.commit() cust = Customer.query\ .filter_by(customer_id=new_orders.customer_id).first() driver = Deliveryboy.query\ .filter_by(driver_id=data["driver_id"]).first() customer_message_title = "Order Approved" customer_message_body = f"Your order id: { new_orders.order_id }, has been updated and approved by the vendor and the new total amount is { order_data['total_bill'] } and will be delivered to you shortly!" vendor_message_title = "Order Approved" vendor_message_body = f"Order id: { new_orders.order_id }, has been approved by you and assinged delivery boy id is: { data['driver_id'] }" driver_message_title = "Order Assinged" driver_message_body = f"Order id: { new_orders.order_id }, has been assinged to you for delivery" res_customer = send_push_customer(customer_message_title, customer_message_body, cust.device_id) res_vendor = send_push_vendor(vendor_message_title, vendor_message_body, current_user.device_id) res_driver = send_push_driver(driver_message_title, driver_message_body, driver.device_id) db.session.delete(new_orders) db.session.commit() return jsonify({ "success": "1", "message": "Order Accepted", "cust_noti": res_customer, "ven_noti": res_vendor, "driv_noti": res_driver }) except Exception as e: print(e) db.session.rollback() return jsonify({"success": "0", "message": "Some issue occured"}) elif data["status"] == '0': new_orders.status = False try: cust = Customer.query\ .filter_by(customer_id=new_orders.customer_id).first() customer_message_title = "Order Declined" customer_message_body = f"Your order id: { new_orders.order_id }, has been declined by the vendor!!" vendor_message_title = "Order Declined" vendor_message_body = f"Order id: { new_orders.order_id }, has been declined!!" res_customer = send_push_customer(customer_message_title, customer_message_body, cust.device_id) res_vendor = send_push_vendor(vendor_message_title, vendor_message_body, current_user.device_id) db.session.delete(new_orders) db.session.commit() return jsonify({ "success": "1", "message": "Order Declined", "cust_noti": res_customer, "ven_noti": res_vendor }) except Exception as e: print(e) db.session.rollback() return jsonify({"success": "0", "message": "Some issue occured"}) return jsonify({"success": "0", "message": "Order Not Updated"})
def vendor_order_update(current_user): data = request.args new_orders = New_order.query\ .filter_by(order_id=data['order_id'])\ .first() if data['status'] == '1' and data["driver_id"] != '': new_orders.status = True curr_order = Ongoing_order( order_id=new_orders.order_id, customer_id=new_orders.customer_id, delivery_address=new_orders.delivery_address, delivery_boy_id=data["driver_id"], bill=new_orders.bill, total_bill=new_orders.total_bill, delivery_method=new_orders.delivery_method, vendor_details=new_orders.vendor_details) db.session.add(curr_order) products = New_order_products.query\ .filter_by(new_order=new_orders).all() for product in products: order_products = Ongoing_order_products( product_id=product.product_id, quantity=product.quantity, total_price=str(product.total_price), order=data['order_id']) db.session.add(order_products) try: db.session.commit() cust = Customer.query\ .filter_by(customer_id=new_orders.customer_id).first() driver = Deliveryboy.query\ .filter_by(driver_id=data["driver_id"]).first() customer_message_title = "Order Approved" customer_message_body = f"Your order id: { new_orders.order_id }, has been approved by the vendor and will be delivered to you shortly!" vendor_message_title = "Order Approved" vendor_message_body = f"Order id: { new_orders.order_id }, has been approved by you and assinged delivery boy id is: { data['driver_id'] }" driver_message_title = "Order Assinged" driver_message_body = f"Order id: { new_orders.order_id }, has been assinged to you for delivery" res_customer = send_push_customer(customer_message_title, customer_message_body, cust.device_id) res_vendor = send_push_vendor(vendor_message_title, vendor_message_body, current_user.device_id) res_driver = send_push_driver(driver_message_title, driver_message_body, driver.device_id) db.session.delete(new_orders) db.session.commit() return jsonify({ "success": "1", "message": "Order Accepted", "cust_noti": res_customer, "ven_noti": res_vendor, "driv_noti": res_driver }) except Exception as e: print(e) db.session.rollback() return jsonify({"success": "0", "message": "Some issue occured"}) elif data['status'] == '0': new_orders.status = False new_orders = New_order.query.filter_by(order_id=data['order_id'])\ .first() try: cust = Customer.query\ .filter_by(customer_id=new_orders.customer_id).first() customer_message_title = "Order Declined" customer_message_body = f"Your order id: { new_orders.order_id }, has been declined by the vendor!!" vendor_message_title = "Order Declined" vendor_message_body = f"Order id: { new_orders.order_id }, has been declined!!" res_customer = send_push_customer(customer_message_title, customer_message_body, cust.device_id) res_vendor = send_push_vendor(vendor_message_title, vendor_message_body, current_user.device_id) db.session.delete(new_orders) db.session.commit() return jsonify({ "success": "1", "message": "Order Declined", "cust_noti": res_customer, "ven_noti": res_vendor }) except Exception as e: print(e) db.session.rollback() return jsonify({"success": "0", "message": "Some issue occured"}) return jsonify({"success": "0", "message": "Order Not Created"})
def order_complete(current_user): if request.args: data = request.args new_orders = Ongoing_order.query\ .filter_by(order_id=data['order_id'])\ .first() if data['status'] == '1': new_orders.status = True curr_order = Prev_order( order_id=new_orders.order_id, customer_id=new_orders.customer_id, delivery_address=new_orders.delivery_address, delivery_boy_id=new_orders.delivery_boy_id, bill=new_orders.bill, total_bill=new_orders.total_bill, delivery_method=new_orders.delivery_method, vendor_details=new_orders.vendor_details) db.session.add(curr_order) products = Ongoing_order_products.query\ .filter_by(ongoing_order=new_orders).all() for product in products: order_products = Prev_order_products( product_id=product.product_id, quantity=product.quantity, total_price=product.total_price, order=data['order_id']) db.session.add(order_products) try: for i in products: prod = Vendor_products.query\ .filter_by(vendor_details=new_orders.vendor_details, product_id=i.product_id).first() prod.quantity_left = prod.quantity_left - i.quantity cust = Customer.query\ .filter_by(customer_id=new_orders.customer_id).first() vendor = Vendor.query\ .filter_by(vendor_id=new_orders.vendor_details).first() customer_message_title = "Order Delivered" customer_message_body = f"Your order id: { new_orders.order_id }, has been delivered successfully to you!!" vendor_message_title = "Order Delivered" vendor_message_body = f"Order id: { new_orders.order_id }, has been delivered by delievry boy id is: { current_user.driver_id }" driver_message_title = "Order Delivered" driver_message_body = f"Order id: { new_orders.order_id }, has been delivered succesfully!!" res_customer = send_push_customer(customer_message_title, customer_message_body, cust.device_id) res_vendor = send_push_vendor(vendor_message_title, vendor_message_body, vendor.device_id) res_driver = send_push_driver(driver_message_title, driver_message_body, current_user.device_id) db.session.delete(new_orders) db.session.commit() return jsonify({ "success": "1", "message": "Order Received", "cust_noti": res_customer, "ven_noti": res_vendor, "driv_noti": res_driver }) except Exception as e: print(e) db.session.rollback() return jsonify({"success": "0", "message": "error ocurred"}) return jsonify({"success": "0", "message": "data sent not correct"})