from flask import Flask, request, jsonify
app = Flask(__name__)
# Database to store user progress and information
users = {}
def validate_user(name, contact):
"""Validate if user already exists or create a new entry."""
if contact not in users:
users[contact] = {
"name": name,
"contact": contact,
"progress": {f"game_{i+1}": False for i in range(10)},
"completed": 0
}
return users[contact]
@app.route("/register", methods=["POST"])
def register_user():
data = request.json
name = data.get("name")
contact = data.get("contact")
if not name or not contact:
return jsonify({"error": "Name and contact are required."}), 400
user = validate_user(name, contact)
return jsonify({"message": "User registered successfully.", "user": user}), 200
@app.route("/update_progress", methods=["POST"])
def update_progress():
data = request.json
contact = data.get("contact")
game_id = data.get("game_id")
if not contact or not game_id:
return jsonify({"error": "Contact and game ID are required."}), 400
if contact not in users:
return jsonify({"error": "User not found."}), 404
user = users[contact]
if game_id not in user["progress"]:
return jsonify({"error": "Invalid game ID."}), 400
if not user["progress"][game_id]:
user["progress"][game_id] = True
user["completed"] += 1
return jsonify({"message": "Progress updated successfully.", "user": user}), 200
@app.route("/validate", methods=["GET"])
def validate_user_progress():
contact = request.args.get("contact")
if not contact:
return jsonify({"error": "Contact is required."}), 400
if contact not in users:
return jsonify({"error": "User not found."}), 404
user = users[contact]
return jsonify({"user": user}), 200
@app.route("/redeem", methods=["POST"])
def redeem_gift():
data = request.json
contact = data.get("contact")
if not contact:
return jsonify({"error": "Contact is required."}), 400
if contact not in users:
return jsonify({"error": "User not found."}), 404
user = users[contact]
if user["completed"] >= 5: # Adjust the threshold for gift redemption
return jsonify({"message": "Gift redeemed successfully!", "user": user}), 200
return jsonify({"error": "Not enough games completed for redemption."}), 400
if __name__ == "__main__":
app.run(debug=True)