from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import select, text from app.api.deps import get_db, get_current_user from app.models.vehicle import Vehicle from app.models.company import CompanyMember router = APIRouter() @router.get("/vehicles") async def get_my_vehicles(db: AsyncSession = Depends(get_db), current_user = Depends(get_current_user)): # Megkeressük a cégeket (széfeket), amikhez a felhasználónak köze van company_query = select(CompanyMember.company_id).where(CompanyMember.user_id == current_user.id) company_res = await db.execute(company_query) company_ids = company_res.scalars().all() if not company_ids: return [] # Lekérjük az összes járművet, ami ezekhez a cégekhez tartozik query = select(Vehicle).where(Vehicle.current_company_id.in_(company_ids)) result = await db.execute(query) return result.scalars().all() @router.post("/vehicles") async def add_vehicle(vehicle_in: dict, db: AsyncSession = Depends(get_db), current_user = Depends(get_current_user)): # Itt a meglévő logika fut tovább, de a Vehicle-t a user alapértelmezett cégéhez kötjük # Először lekérjük a user "owner" típusú cégét org_query = text("SELECT company_id FROM data.company_members WHERE user_id = :uid AND role = 'owner' LIMIT 1") org_res = await db.execute(org_query, {"uid": current_user.id}) company_id = org_res.scalar() if not company_id: raise HTTPException(status_code=404, detail="Nem található saját széf a jármű rögzítéséhez.") # Új jármű létrehozása az új modell alapján new_vehicle = Vehicle( current_company_id=company_id, brand_id=vehicle_in.get("brand_id"), model_name=vehicle_in.get("model_name"), identification_number=vehicle_in.get("vin"), license_plate=vehicle_in.get("license_plate") ) db.add(new_vehicle) await db.commit() return {"status": "success", "vehicle_id": str(new_vehicle.id)}