from fastapi import APIRouter, Depends, Request from sqlalchemy.orm import Session from app.common.db.session import get_db from app.common.responses.api_response import success_response from app.common.security.deps import get_current_user from app.models.entities import User from app.modules.wallets.schema import CreateRechargeOrderRequest, ExchangeRedeemCodeRequest from app.modules.wallets.service import WalletService router = APIRouter(prefix="/api/v1/wallet", tags=["wallet"]) @router.get("") def get_wallet(current_user: User = Depends(get_current_user), db: Session = Depends(get_db)): return success_response(WalletService(db).get_wallet_summary(current_user.id)) @router.get("/transactions") def list_transactions( current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): return success_response(WalletService(db).list_transactions(current_user.id)) @router.post("/recharge-orders") def create_recharge_order( payload: CreateRechargeOrderRequest, current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): return success_response(WalletService(db).create_recharge_order(current_user.id, payload)) @router.get("/recharge-options") def get_recharge_options( current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): return success_response(WalletService(db).recharge_options()) @router.get("/recharge-orders") def list_recharge_orders( current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): return success_response(WalletService(db).list_recharge_orders(current_user.id)) @router.post("/redeem-codes/exchange") def exchange_redeem_code( payload: ExchangeRedeemCodeRequest, request: Request, current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): return success_response( WalletService(db).exchange_redeem_code(current_user.id, payload, request) ) @router.get("/redeem-records") def list_redeem_records( current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): return success_response(WalletService(db).list_redeem_records(current_user.id))