diff --git a/backend/CrowdAnalyser/CrowdAPI.py b/backend/CrowdAnalyser/CrowdAPI.py index 9df0fe4ec..6e8ad85ad 100644 --- a/backend/CrowdAnalyser/CrowdAPI.py +++ b/backend/CrowdAnalyser/CrowdAPI.py @@ -56,4 +56,68 @@ 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('/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 = 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 + 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": {time, 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('/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"]) + + db.Crowd.insert_one({ + "key": key, + "facilityID": facilityID, + "time": time, + "level": level + }) + + return make_response({"status": "success"}) + except Exception as e: + print(e) + return make_response({"status": "failed"}) +