from fastapi import APIRouter, Depends, Header
from app.core.database import get_db
from app.core.dependencies import require_permission
from app.schemas.transaction import TransactionCreate
from app.services.transaction_service import TransactionService
router=APIRouter(prefix="/transactions",tags=["Transactions"])

@router.post("")
async def create(data:TransactionCreate, idempotency_key:str|None=Header(None, alias="Idempotency-Key"), user=Depends(require_permission("transactions.manage")), db=Depends(get_db)):
    if idempotency_key: data.external_reference=idempotency_key
    tx=await TransactionService.create(db,user.brand_id,data)
    return {"success":True,"message":"Transaction created","data":{"id":tx.id,"amount":float(tx.amount),"points_earned":tx.points_earned}}
