Esempio n. 1
0
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'))
Esempio n. 2
0
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"})
Esempio n. 3
0
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"})
Esempio n. 4
0
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"})
Esempio n. 5
0
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"})
Esempio n. 6
0
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"})
Esempio n. 7
0
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"})