from flask import Flask, render_template, request, redirect, url_for, jsonify from models.salesforce import fetch_menu_items, place_order_in_salesforce from models.cart import add_to_cart, view_cart, clear_cart from models.user import login_user, signup_user app = Flask(__name__) @app.route("/", methods=["GET", "POST"]) def login(): if request.method == "POST": email = request.form.get("email") password = request.form.get("password") success, message = login_user(email, password) if success: return redirect(url_for("menu")) return render_template("login.html", error=message) return render_template("login.html") @app.route("/signup", methods=["GET", "POST"]) def signup(): if request.method == "POST": name = request.form.get("name") email = request.form.get("email") phone = request.form.get("phone") password = request.form.get("password") success, message = signup_user(name, email, phone, password) if success: return redirect(url_for("login")) return render_template("signup.html", error=message) return render_template("signup.html") @app.route("/menu") def menu(): menu_items = fetch_menu_items() return render_template("menu.html", menu_items=menu_items) @app.route("/add_to_cart", methods=["POST"]) def add_to_cart_route(): data = request.json cart = add_to_cart(data["name"], data["price"]) return jsonify({"message": "Item added to cart!", "cart": cart}) @app.route("/cart") def cart_page(): cart, total = view_cart() return render_template("cart.html", cart=cart, total=total) @app.route("/place_order", methods=["POST"]) def place_order(): email = request.form.get("email") cart, total = view_cart() if not cart: return render_template("cart.html", error="Cart is empty!", cart=cart, total=0) order_details = "\n".join([f"{item['Name']} - ${item['Price']} x {item['Quantity']}" for item in cart]) try: place_order_in_salesforce(email, order_details, total) clear_cart() return render_template("cart.html", success="Order placed successfully!", cart=[], total=0) except Exception as e: return render_template("cart.html", error=f"Error: {str(e)}", cart=cart, total=total) if __name__ == "__main__": app.run(debug=True)