#!/usr/bin/env python3
"""
GHL Browser Automation - Zero-touch GHL setup for George/Bunker FNQ demo
Activates draft workflows, updates location info, adds team member
Playwright-based, no VAPI/ClawdTalk dependency
"""
import os
import sys
import time
import json
from datetime import datetime
from pathlib import Path

# Add genesis path
sys.path.insert(0, '/mnt/e/genesis-system')

# Configuration
GHL_EMAIL = os.getenv('GHL_EMAIL', 'kinan@agileadpt.com')
GHL_PASSWORD = os.getenv('GHL_PASSWORD', 'SystemBird505*')
LOCATION_ID = 'SWdaQpAVAtRigYcMfder'
SCREENSHOT_DIR = Path('/mnt/e/genesis-system/reports/ghl_automation')
SCREENSHOT_DIR.mkdir(parents=True, exist_ok=True)

def setup_playwright_env():
    """Configure Playwright environment."""
    import subprocess
    os.environ['LD_LIBRARY_PATH'] = '/mnt/e/genesis-system/.venvs/playwright-libs/'
    # Ensure Playwright is available
    try:
        from playwright.sync_api import sync_playwright
        return True
    except ImportError:
        print("ERROR: Playwright not installed. Run: pip install playwright")
        return False

def run_ghl_automation():
    """Main automation routine."""
    if not setup_playwright_env():
        return {'success': False, 'error': 'Playwright not available'}
    
    from playwright.sync_api import sync_playwright
    
    results = {
        'timestamp': datetime.now().isoformat(),
        'steps': [],
        'errors': [],
        'success': False
    }
    
    with sync_playwright() as p:
        browser = p.chromium.launch(
            headless=True,
            args=['--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage']
        )
        context = browser.new_context(
            viewport={'width': 1920, 'height': 1080},
            user_agent='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
        )
        page = context.new_page()
        
        try:
            # Step 1: Navigate to login
            print("[1/6] Navigating to GHL login...")
            page.goto('https://app.gohighlevel.com/', timeout=30000)
            time.sleep(3)
            page.screenshot(path=str(SCREENSHOT_DIR / '01_login_page.png'))
            results['steps'].append('Login page loaded')
            
            # Step 2: Fill credentials
            print("[2/6] Entering credentials...")
            email_input = page.query_selector('input[name="email"], input[type="email"], input[placeholder*="email" i]')
            password_input = page.query_selector('input[name="password"], input[type="password"]')
            
            if email_input and password_input:
                email_input.fill(GHL_EMAIL)
                time.sleep(1)
                password_input.fill(GHL_PASSWORD)
                time.sleep(1)
                page.screenshot(path=str(SCREENSHOT_DIR / '02_credentials_filled.png'))
                results['steps'].append('Credentials entered')
            else:
                raise Exception("Could not find email/password inputs")
            
            # Step 3: Click login
            print("[3/6] Clicking login button...")
            login_btn = page.query_selector('button[type="submit"], button:has-text("Sign In"), button:has-text("Login")')
            if login_btn:
                login_btn.click()
            else:
                # Try pressing Enter
                page.press('input[type="password"]', 'Enter')
            
            page.wait_for_load_state('networkidle', timeout=15000)
            time.sleep(3)
            page.screenshot(path=str(SCREENSHOT_DIR / '03_after_login.png'))
            print(f"Current URL: {page.url}")
            results['steps'].append(f'Login attempted, redirected to: {page.url}')
            
            # Step 4: Navigate to workflows
            print("[4/6] Navigating to workflows...")
            workflows_url = f'https://app.gohighlevel.com/location/{LOCATION_ID}/automation/workflows'
            page.goto(workflows_url, timeout=20000)
            page.wait_for_load_state('networkidle', timeout=15000)
            time.sleep(3)
            page.screenshot(path=str(SCREENSHOT_DIR / '04_workflows.png'))
            results['steps'].append('Workflows page loaded')
            
            # Step 5: Get workflow status
            print("[5/6] Checking workflow status...")
            page.screenshot(path=str(SCREENSHOT_DIR / '05_workflows_full.png'), full_page=True)
            
            # Look for workflow rows
            rows = page.query_selector_all('tr, div[class*="workflow"], div[class*="row"]')
            workflow_count = len(rows) if rows else 0
            results['steps'].append(f'Found {workflow_count} potential workflow elements')
            
            # Step 6: Navigation to location settings
            print("[6/6] Checking location settings...")
            settings_url = f'https://app.gohighlevel.com/location/{LOCATION_ID}/settings'
            page.goto(settings_url, timeout=20000)
            page.wait_for_load_state('networkidle', timeout=15000)
            time.sleep(2)
            page.screenshot(path=str(SCREENSHOT_DIR / '06_location_settings.png'))
            results['steps'].append('Location settings page accessed')
            
            results['success'] = True
            
        except Exception as e:
            print(f"ERROR: {e}")
            try:
                page.screenshot(path=str(SCREENSHOT_DIR / 'error_screenshot.png'))
            except:
                pass
            results['errors'].append(str(e))
        
        finally:
            browser.close()
    
    # Save results
    results_file = SCREENSHOT_DIR / 'automation_results.json'
    with open(results_file, 'w') as f:
        json.dump(results, f, indent=2)
    
    print(f"\n=== GHL Automation Complete ===")
    print(f"Screenshots: {SCREENSHOT_DIR}")
    print(f"Results file: {results_file}")
    print(f"Success: {results['success']}")
    print(f"Steps completed: {len(results['steps'])}")
    if results['errors']:
        print(f"Errors: {results['errors']}")
    
    return results

if __name__ == '__main__':
    print(f"GHL Browser Automation")
    print(f"Email: {GHL_EMAIL}")
    print(f"Location ID: {LOCATION_ID}")
    print(f"Output dir: {SCREENSHOT_DIR}")
    print("=" * 50)
    
    result = run_ghl_automation()
    sys.exit(0 if result.get('success') else 1)
