#!/usr/bin/env python3
"""
FLHIP Scraper v3 - Export Leads to CSV
Exports leads in client's required format

Usage:
    python export_leads.py                    # Export all leads
    python export_leads.py --days 7           # Export last 7 days
    python export_leads.py --today            # Export today only
"""

import csv
import argparse
from datetime import datetime, timedelta
from db_handler import get_connection

def export_leads(days: int = None, output_file: str = None) -> str:
    """Export leads to CSV in client format."""
    
    conn = get_connection()
    if not conn:
        print("Database connection failed")
        return None
    
    cursor = conn.cursor(dictionary=True)
    
    # Build query
    if days:
        sql = """
        SELECT * FROM restaurant_leads_usa2 
        WHERE created_at >= DATE_SUB(NOW(), INTERVAL %s DAY)
        ORDER BY state, city, business
        """
        cursor.execute(sql, (days,))
    else:
        sql = """
        SELECT * FROM restaurant_leads_usa2 
        ORDER BY state, city, business
        """
        cursor.execute(sql)
    
    leads = cursor.fetchall()
    cursor.close()
    conn.close()
    
    if not leads:
        print("No leads found")
        return None
    
    # Generate filename
    if not output_file:
        date_str = datetime.now().strftime("%Y%m%d")
        output_file = f"flhip_leads_{date_str}.csv"
    
    # Write CSV in client format
    fieldnames = [
        'County',
        'Business', 
        'Address',
        'City',
        'State',
        'Zip',
        'Lat',
        'Long',
        'Phone',
        'Contact Name',
        'Contact E-mail',
        'Info Source',
        'Internet Info',
        'Opening Date',
        'Notes'
    ]
    
    with open(output_file, 'w', newline='', encoding='utf-8') as f:
        writer = csv.DictWriter(f, fieldnames=fieldnames)
        writer.writeheader()
        
        for lead in leads:
            row = {
                'County': lead.get('county') or '',
                'Business': lead.get('business') or '',
                'Address': lead.get('address') or '',
                'City': lead.get('city') or '',
                'State': lead.get('state') or '',
                'Zip': lead.get('zip') or '',
                'Lat': lead.get('lat') or '',
                'Long': lead.get('lng') or '',
                'Phone': lead.get('phone') or '',
                'Contact Name': lead.get('contact_name') or '',
                'Contact E-mail': lead.get('contact_email') or '',
                'Info Source': lead.get('info_source') or '',
                'Internet Info': lead.get('internet_info') or '',
                'Opening Date': lead.get('opening_date') or '',
                'Notes': lead.get('notes') or ''
            }
            writer.writerow(row)
    
    print(f"Exported {len(leads)} leads to {output_file}")
    return output_file


def main():
    parser = argparse.ArgumentParser(description="Export FLHIP leads to CSV")
    parser.add_argument("--days", type=int, help="Export leads from last N days")
    parser.add_argument("--today", action="store_true", help="Export today's leads only")
    parser.add_argument("--output", "-o", type=str, help="Output filename")
    args = parser.parse_args()
    
    if args.today:
        days = 1
    else:
        days = args.days
    
    export_leads(days=days, output_file=args.output)


if __name__ == "__main__":
    main()
