From 9ab8f564338d25d1f1a09ac4f690033ddf1bd319 Mon Sep 17 00:00:00 2001 From: JIA YUE KAM Date: Fri, 24 Mar 2023 23:54:12 +0800 Subject: [PATCH 1/2] setup crowd api --- backend/CrowdAnalyser/CrowdAPI.py | 50 ++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/backend/CrowdAnalyser/CrowdAPI.py b/backend/CrowdAnalyser/CrowdAPI.py index 9df0fe4ec..2a4209db7 100644 --- a/backend/CrowdAnalyser/CrowdAPI.py +++ b/backend/CrowdAnalyser/CrowdAPI.py @@ -56,4 +56,52 @@ def get_weekly_crowd(): except Exception as e: print(e) return {"err": "An error has occured", "status": "failed"}, 500 - return make_response(response) \ No newline at end of file + return make_response(response) + + + + +@crowd_api.route('/getdaily', methods = ["GET"]) +@cross_origin(supports_credentials=True) +def get_daily_crowd(): + try: + # Get facilityID and time + facilityID = request.args.get('facilityID') + time = request.args.get('time') + + # Get data Crowd table + data = list(db.Crowd.find({ + "facilityID": int(facilityID), + "time": {"$gte": time, "$lte": time + 24 * 60 * 60} + })) + + # Calculating average crowd level + level_sum = 0 + for checkpoint in data: + level_sum += checkpoint["level"] + avg_level = 0 + if len(data) == 0: + avg_level = 0 + else: + avg_level = level_sum / len(data) + + # return response if successful + response = {"facilityID": facilityID, "level": avg_level, "status": "success"} + return make_response(response) + except Exception as e: + print(e) + # return false response if unsuccessful + response = {"err": "An error has occured", "status": "failed"} + return make_response(response) + + + +@crowd_api.route('/postdaily', methods = ["POST"]) +@cross_origin(supports_credentials=True) +def post_daily_crowd(): + try: + + return None + except Exception as e: + return None + From c30c4c6c6faa7ccd4ea1dbe63e647c562098dd72 Mon Sep 17 00:00:00 2001 From: JIA YUE KAM Date: Sat, 25 Mar 2023 01:08:43 +0800 Subject: [PATCH 2/2] completed --- backend/CrowdAnalyser/CrowdAPI.py | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/backend/CrowdAnalyser/CrowdAPI.py b/backend/CrowdAnalyser/CrowdAPI.py index 2a4209db7..6e8ad85ad 100644 --- a/backend/CrowdAnalyser/CrowdAPI.py +++ b/backend/CrowdAnalyser/CrowdAPI.py @@ -61,19 +61,21 @@ def get_weekly_crowd(): -@crowd_api.route('/getdaily', methods = ["GET"]) +@crowd_api.route('/daily', methods = ["GET"]) @cross_origin(supports_credentials=True) def get_daily_crowd(): try: + print("supp") # Get facilityID and time facilityID = request.args.get('facilityID') - time = request.args.get('time') + time = int(request.args.get('time')) # Get data Crowd table data = list(db.Crowd.find({ "facilityID": int(facilityID), "time": {"$gte": time, "$lte": time + 24 * 60 * 60} })) + print(data) # Calculating average crowd level level_sum = 0 @@ -86,7 +88,7 @@ def get_daily_crowd(): avg_level = level_sum / len(data) # return response if successful - response = {"facilityID": facilityID, "level": avg_level, "status": "success"} + response = {"facilityID": facilityID, "level": {time, avg_level}, "status": "success"} return make_response(response) except Exception as e: print(e) @@ -96,12 +98,26 @@ def get_daily_crowd(): -@crowd_api.route('/postdaily', methods = ["POST"]) +@crowd_api.route('/daily', methods = ["POST"]) @cross_origin(supports_credentials=True) def post_daily_crowd(): try: + inputs = request.get_json() + + key = inputs["key"] + facilityID = int(inputs["facilityID"]) + time = int(inputs["time"]) + level = int(inputs["level"]) - return None + db.Crowd.insert_one({ + "key": key, + "facilityID": facilityID, + "time": time, + "level": level + }) + + return make_response({"status": "success"}) except Exception as e: - return None + print(e) + return make_response({"status": "failed"})