import asyncio
import random
from sqlalchemy import select
from app.core.database import AsyncSessionLocal
import app.models.sales_models; from app.models.yard_models import ChassisMaster, VehicleModelMaster
from app.models.dealer_models import DealerOrderVehicle

async def main():
    async with AsyncSessionLocal() as db:
        # Get chassis 67487
        c_res = await db.execute(select(ChassisMaster).where(ChassisMaster.chassis_no == '67487'))
        chassis = c_res.scalars().first()
        if not chassis:
            print("Chassis 67487 not found")
            return
            
        print(f"Chassis: {chassis.chassis_no}, model_id: {chassis.model_id}")
        
        # Get a dealer order vehicle for this model
        dov_res = await db.execute(select(DealerOrderVehicle).where(DealerOrderVehicle.model_id == chassis.model_id))
        dov = dov_res.scalars().first()
        
        if not dov:
            print("No DealerOrderVehicle found for this model. Need to create one.")
            # Create a mock one
            from app.models.dealer_models import DealerOrder
            import uuid
            order = DealerOrder(
                order_no="MOCK-ORD-001",
                dealer_id="CUST-001",
                client_id="CLI-001",
                status="CONFIRMED"
            )
            db.add(order)
            await db.flush()
            
            # Fetch a body type and segment
            import app.models.sales_models; from app.models.yard_models import BodyTypeMaster, CustomerSegmentMaster
            bt_res = await db.execute(select(BodyTypeMaster))
            bt = bt_res.scalars().first()
            seg_res = await db.execute(select(CustomerSegmentMaster))
            seg = seg_res.scalars().first()
            
            dov = DealerOrderVehicle(
                order_id=order.order_id,
                model_id=chassis.model_id,
                body_type_id=bt.body_type_id if bt else None,
                segment_id=seg.segment_id if seg else None,
                qty=1
            )
            db.add(dov)
            await db.flush()
            print(f"Created new DealerOrderVehicle {dov.order_vehicle_id}")
        else:
            print(f"Found existing DealerOrderVehicle {dov.order_vehicle_id}")
            
        chassis.dealer_order_vehicle_id = dov.order_vehicle_id
        await db.commit()
        print("Successfully linked chassis 67487 to DealerOrderVehicle.")

asyncio.run(main())
