from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.ext.asyncio import AsyncSession from app.db.session import get_db from app.deps import get_tenant_id from app.orders import schemas, service router = APIRouter() @router.get("") async def list_orders( tenant_id: str = Depends(get_tenant_id), db: AsyncSession = Depends(get_db), ): return await service.list_orders(db, tenant_id) @router.post("") async def create_order( data: schemas.CreateOrderRequest, tenant_id: str = Depends(get_tenant_id), db: AsyncSession = Depends(get_db), ): order = await service.create_order( db, tenant_id, data.vehicle_id, data.tip_deviz_id, data.km_intrare, data.observatii, ) return {"id": order.id} @router.get("/{order_id}") async def get_order( order_id: str, tenant_id: str = Depends(get_tenant_id), db: AsyncSession = Depends(get_db), ): result = await service.get_order(db, tenant_id, order_id) if not result: raise HTTPException(status_code=404, detail="Order not found") return result @router.post("/{order_id}/lines") async def add_line( order_id: str, data: schemas.AddLineRequest, tenant_id: str = Depends(get_tenant_id), db: AsyncSession = Depends(get_db), ): try: line = await service.add_line( db, tenant_id, order_id, data.tip, data.descriere, data.ore, data.pret_ora, data.cantitate, data.pret_unitar, data.um, ) return {"id": line.id} except ValueError as e: raise HTTPException(status_code=422, detail=str(e)) @router.post("/{order_id}/validate") async def validate_order( order_id: str, tenant_id: str = Depends(get_tenant_id), db: AsyncSession = Depends(get_db), ): try: order = await service.validate_order(db, tenant_id, order_id) return {"status": order.status} except ValueError as e: raise HTTPException(status_code=422, detail=str(e))