from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import text
from app.api.deps import get_db, get_current_user
from pydantic import BaseModel
from datetime import date
from typing import Optional

router = APIRouter()

class ExpenseCreate(BaseModel):
    vehicle_id: str
    category: str # Pl: REFUELING, SERVICE, INSURANCE
    amount: float
    date: date
    odometer_value: Optional[float] = None
    description: Optional[str] = None

@router.post("/add")
async def add_expense(
    expense: ExpenseCreate, 
    db: AsyncSession = Depends(get_db), 
    current_user = Depends(get_current_user)
):
    """
    Új költség rögzítése egy járműhöz.
    """
    # 1. Ellenőrizzük, hogy a jármű létezik-e
    query = text("SELECT id FROM data.vehicles WHERE id = :v_id")
    res = await db.execute(query, {"v_id": expense.vehicle_id})
    if not res.fetchone():
        raise HTTPException(status_code=404, detail="Jármű nem található.")

    # 2. Beszúrás a vehicle_expenses táblába
    insert_query = text("""
        INSERT INTO data.vehicle_expenses 
        (vehicle_id, category, amount, date, odometer_value, description)
        VALUES (:v_id, :cat, :amt, :date, :odo, :desc)
    """)
    
    await db.execute(insert_query, {
        "v_id": expense.vehicle_id,
        "cat": expense.category,
        "amt": expense.amount,
        "date": expense.date,
        "odo": expense.odometer_value,
        "desc": expense.description
    })
    
    await db.commit()
    return {"status": "success", "message": "Költség rögzítve."}