#!/usr/bin/env python3
"""GHL automation - activate workflows, update location, immediate run"""
import os, sys, time, json
from datetime import datetime
from pathlib import Path

os.environ['LD_LIBRARY_PATH'] = '/mnt/e/genesis-system/.venvs/playwright-libs/'
sys.path.insert(0, '/mnt/e/genesis-system')

SCREENSHOT_DIR = Path('/mnt/e/genesis-system/reports/ghl_automation')
SCREENSHOT_DIR.mkdir(parents=True, exist_ok=True)

GHL_EMAIL = 'kinan@agileadpt.com'
GHL_PASSWORD = 'SystemBird505*'
LOCATION_ID = 'SWdaQpAVAtRigYcMfder'

def run():
    from playwright.sync_api import sync_playwright
    results = []
    
    with sync_playwright() as p:
        browser = p.chromium.launch(
            headless=True,
            args=['--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage', '--disable-setuid-sandbox']
        )
        context = browser.new_context(
            viewport={'width': 1920, 'height': 1080},
            user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36'
        )
        page = context.new_page()
        page.set_default_timeout(20000)
        
        try:
            # LOGIN
            print("Step 1: Logging into GHL...")
            page.goto('https://app.gohighlevel.com/', timeout=30000)
            page.wait_for_load_state('domcontentloaded')
            page.screenshot(path=str(SCREENSHOT_DIR / '01_login.png'))
            
            # Try email field
            try:
                page.fill('input[placeholder*="email" i], input[type="email"]', GHL_EMAIL)
                page.fill('input[placeholder*="password" i], input[type="password"]', GHL_PASSWORD)
                page.screenshot(path=str(SCREENSHOT_DIR / '02_filled.png'))
                page.click('button[type="submit"]')
                page.wait_for_load_state('networkidle', timeout=15000)
            except Exception as e:
                print(f"Login form error: {e}")
                page.screenshot(path=str(SCREENSHOT_DIR / '02_error.png'))
            
            current_url = page.url
            print(f"After login: {current_url}")
            page.screenshot(path=str(SCREENSHOT_DIR / '03_post_login.png'))
            results.append(f"Login URL: {current_url}")
            
            # NAVIGATE TO LOCATION
            print("Step 2: Navigating to location...")
            page.goto(f'https://app.gohighlevel.com/location/{LOCATION_ID}/automation/workflows', timeout=20000)
            page.wait_for_load_state('networkidle', timeout=15000)
            page.screenshot(path=str(SCREENSHOT_DIR / '04_workflows.png'), full_page=True)
            
            workflow_url = page.url
            print(f"Workflows page: {workflow_url}")
            results.append(f"Workflows URL: {workflow_url}")
            
            # GET PAGE TITLE AND CONTENT
            title = page.title()
            print(f"Page title: {title}")
            results.append(f"Page title: {title}")
            
            # CHECK FOR DRAFT WORKFLOWS
            page.wait_for_timeout(3000)
            content = page.content()
            draft_count = content.lower().count('draft')
            print(f"Draft mentions on page: {draft_count}")
            results.append(f"Draft mentions: {draft_count}")
            
            # SCREENSHOT FULL PAGE
            page.screenshot(path=str(SCREENSHOT_DIR / '05_workflows_full.png'), full_page=True)
            
        except Exception as e:
            print(f"CRITICAL ERROR: {e}")
            results.append(f"ERROR: {e}")
            try:
                page.screenshot(path=str(SCREENSHOT_DIR / 'critical_error.png'))
            except:
                pass
        finally:
            browser.close()
    
    report = {
        'timestamp': datetime.now().isoformat(),
        'results': results,
        'screenshots': [str(f) for f in SCREENSHOT_DIR.glob('*.png')]
    }
    with open(SCREENSHOT_DIR / 'report.json', 'w') as f:
        json.dump(report, f, indent=2)
    
    print("\n=== REPORT ===")
    for r in results:
        print(f"  {r}")
    print(f"Screenshots: {SCREENSHOT_DIR}")
    return report

if __name__ == '__main__':
    run()
