From fd342f7d98cedb651190c51abf40ff01ea6f8f61 Mon Sep 17 00:00:00 2001 From: Sk_Akib_Ahammed Date: Tue, 13 Jan 2026 13:05:18 +0530 Subject: [PATCH] now the users can check if their order status is completed or not --- app/app.py | 11 +++++++++-- app/user.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/app/app.py b/app/app.py index 94f7a33..25818ee 100644 --- a/app/app.py +++ b/app/app.py @@ -1,4 +1,5 @@ - # app/app.py + # app/app.py + import os from fastapi import FastAPI, Security, File, UploadFile from fastapi.middleware.cors import CORSMiddleware @@ -31,7 +32,7 @@ remove_staff_member, update_staff_email, ) -from .user import get_user_menu, create_payment_order +from .user import get_user_menu, create_payment_order, get_user_orders from .webhook import router as webhook_router app = FastAPI() @@ -82,6 +83,12 @@ async def create_order_endpoint( ): return await create_payment_order(order_data, credentials.credentials) +@app.get("/user/orders", tags=["user"]) +async def get_student_orders_endpoint( + credentials: HTTPAuthorizationCredentials = Security(security) +): + return await get_user_orders(credentials.credentials) + @app.post('/staff/add-member', tags=["manager"]) async def add_staff_endpoint( staff_data: AddStaffSchema, diff --git a/app/user.py b/app/user.py index b7de66f..8e7d33b 100644 --- a/app/user.py +++ b/app/user.py @@ -211,3 +211,47 @@ async def create_payment_order(order_data: CreateOrderSchema, id_token: str): status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, content={"message": f"Payment Error: {str(e)}"} ) + + +async def get_user_orders(id_token: str): + try: + user_data, user_uid = await get_user_details(id_token) + if not user_data: + return JSONResponse( + status_code=status.HTTP_401_UNAUTHORIZED, + content={"message": "Invalid or expired token."} + ) + + orders_ref = ( + db.collection("orders") + .where("user_id", "==", user_uid) + .order_by("created_at", direction=firestore.Query.DESCENDING) + ) + + docs = orders_ref.stream() + + my_orders = [] + for doc in docs: + data = doc.to_dict() + data['order_id'] = doc.id + + data = serialize_firestore_data(data) + + data.pop("razorpay_payment_data", None) + data.pop("internal_order_id", None) + + my_orders.append(data) + + return JSONResponse( + status_code=status.HTTP_200_OK, + content={ + "count": len(my_orders), + "orders": my_orders + } + ) + + except Exception as e: + return JSONResponse( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + content={"message": str(e)} + )