#!/usr/bin/env python3

import csv
from datetime import datetime

def add_internet_expenses_to_analysis():
    """Add processed internet expenses to the main financial analysis"""
    
    # Read the existing complete expenses
    existing_expenses = []
    try:
        with open('CLEAN_COMPLETE_EXPENSES_2025-2026.csv', 'r', encoding='utf-8') as f:
            reader = csv.DictReader(f)
            existing_expenses = list(reader)
        print(f"Loaded {len(existing_expenses)} existing expense records")
    except FileNotFoundError:
        print("Main expense file not found, will create new one")
    
    # Read the internet expenses
    internet_expenses = []
    with open('processed_internet_expenses_fixed.csv', 'r', encoding='utf-8') as f:
        reader = csv.DictReader(f)
        internet_expenses = list(reader)
    
    print(f"Loaded {len(internet_expenses)} internet expense records")
    
    # Convert internet expenses to match the main format
    formatted_internet_expenses = []
    for expense in internet_expenses:
        formatted_expense = {
            'Date': expense['Date'],
            'Amount': float(expense['Amount']),
            'Vendor': expense['Vendor'],
            'Description': expense['Description'],
            'Category': expense['Category'],
            'Source': expense['Source']
        }
        formatted_internet_expenses.append(formatted_expense)
    
    # Combine all expenses
    all_expenses = existing_expenses + formatted_internet_expenses
    
    # Sort by date
    all_expenses.sort(key=lambda x: x['Date'])
    
    # Write updated file
    output_file = 'COMPLETE_EXPENSES_WITH_INTERNET_2025-2026.csv'
    if all_expenses:
        fieldnames = all_expenses[0].keys()
        with open(output_file, 'w', newline='', encoding='utf-8') as f:
            writer = csv.DictWriter(f, fieldnames=fieldnames)
            writer.writeheader()
            writer.writerows(all_expenses)
    
    print(f"Combined {len(all_expenses)} total expense records in {output_file}")
    
    # Summary analysis
    internet_total = sum(float(e['Amount']) for e in formatted_internet_expenses)
    existing_total = sum(float(e['Amount']) for e in existing_expenses)
    combined_total = internet_total + existing_total
    
    print(f"\nExpense Analysis Update:")
    print(f"Previous Total: ${existing_total:,.2f}")
    print(f"Internet Expenses: ${internet_total:,.2f}")
    print(f"New Combined Total: ${combined_total:,.2f}")
    
    # Breakdown by category
    category_totals = {}
    for expense in all_expenses:
        category = expense.get('Category', 'Uncategorized')
        amount = float(expense['Amount'])
        category_totals[category] = category_totals.get(category, 0) + amount
    
    print(f"\nUpdated Category Breakdown:")
    for category, total in sorted(category_totals.items(), key=lambda x: x[1], reverse=True):
        print(f"  {category}: ${total:,.2f}")
    
    return all_expenses

def main():
    add_internet_expenses_to_analysis()

if __name__ == "__main__":
    main()