import asyncio
import sys

sys.path.insert(0, ".")
from playwright.async_api import async_playwright

from app.modules.auth.application.auth_service import AuthService


async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)
        context = await browser.new_context(viewport={"width": 1440, "height": 900})
        page = await context.new_page()

        auth = AuthService()
        token = auth.create_jwt_token(
            {
                "id": "admin-id-verify",
                "email": "son.dinhson@dscons.vn",
                "role": "superadmin",
                "full_name": "Nguyễn Sĩ Sơn",
                "company_id": "0753d827-90e1-4894-9c16-266ca572c5eb",
            }
        )

        # Set localStorage credentials
        await page.goto("http://127.0.0.1:8000/documents-dashboard")
        await page.evaluate(f"""
            localStorage.setItem('dscons_jwt_token', '{token}');
            localStorage.setItem('dscons_token', '{token}');
            localStorage.setItem('access_token', '{token}');
        """)

        # Reload to load dashboard with auth
        await page.reload()
        await page.wait_for_selector("#doc-table-body tr")
        await asyncio.sleep(1.5)

        # Find row with IB2600471890 and click it
        rows = await page.query_selector_all("#doc-table-body tr")
        print(f"Found {len(rows)} rows in document dashboard.")

        target_row = None
        for r in rows:
            text = await r.inner_text()
            if "IB2600471890" in text or "Gói thầu số 05" in text:
                target_row = r
                break

        if target_row:
            print("Clicking target row for IB2600471890...")
            await target_row.click()
            await asyncio.sleep(1.0)
        else:
            print("Target row not found by text, clicking first row...")
            if rows:
                await rows[0].click()
                await asyncio.sleep(1.0)

        # Capture screenshot of document details with Project Banner
        screenshot_path = "C:/Users/Admin/.gemini/antigravity/brain/389c49a6-bd98-4063-a97e-a7eddcd3b3c8/documents_dashboard_with_project.png"
        await page.screenshot(path=screenshot_path)
        print(f"Screenshot saved to {screenshot_path}")

        await browser.close()


if __name__ == "__main__":
    asyncio.run(main())
