diff --git a/backend/functions/feedback/__init__.py b/backend/functions/feedback/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/functions/feedback/feedback.py b/backend/functions/feedback/feedback.py new file mode 100644 index 0000000..0eddedd --- /dev/null +++ b/backend/functions/feedback/feedback.py @@ -0,0 +1,56 @@ +""" +url for local testing: +http://127.0.0.1:5001/schemessg-v3-dev/asia-southeast1/feedback +""" + +from fb_manager.firebaseManager import FirebaseManager +from firebase_functions import https_fn +from datetime import timezone +import datetime + +# Firestore client +firebase_manager = FirebaseManager() + +@https_fn.on_request(region="asia-southeast1") +def feedback(req: https_fn.Request) -> https_fn.Response: + """ + Handler for logging user feedback + + Args: + req (https_fn.Request): request sent from client + + Returns: + https_fn.Response: response sent to client + """ + + if req.method != "POST": + return https_fn.Response("Only POST requests are allowed.", status=405) + + try: + # Parse the request data + request_json = req.get_json() + feedback_text = request_json.get("feedbackText") + userName = request_json.get("userName") + userEmail = request_json.get("userEmail") + timestamp = datetime.datetime.now(timezone.utc) + + if not feedback_text or not timestamp: + return {"success": False, "message": "Missing required fields."}, 400 + + # Prepare the data for Firestore + feedback_data = { + "feedbackText": feedback_text, + "timestamp": timestamp, + "userName": userName, + "userEmail": userEmail, + } + + # Add the data to Firestore + firebase_manager.firestore_client.collection("userFeedback").add(feedback_data) + + # Return a success response + return {"success": True, "message": "Feedback successfully added."}, 200 + + except Exception as e: + print(f"Error: {e}") + return {"success": False, "message": "Failed to add feedback."}, 500 diff --git a/backend/functions/main.py b/backend/functions/main.py index 8cea6ce..a7903e7 100644 --- a/backend/functions/main.py +++ b/backend/functions/main.py @@ -19,6 +19,7 @@ from loguru import logger from schemes.schemes import schemes # noqa: F401 from schemes.search import schemes_search # noqa: F401 +from feedback.feedback import feedback # Initialise logger