#!/usr/bin/env python3

import csv
from datetime import datetime

def debug_credit_card_csv(csv_file, card_name):
    """Debug credit card CSV parsing"""
    print(f"\n=== Debugging {csv_file} ({card_name}) ===")
    
    valid_transactions = 0
    total_rows = 0
    zero_amounts = 0
    bad_dates = 0
    empty_merchants = 0
    old_dates = 0
    
    try:
        with open(csv_file, 'r', encoding='utf-8') as f:
            reader = csv.DictReader(f)
            
            print(f"Column headers: {reader.fieldnames}")
            
            for i, row in enumerate(reader):
                total_rows += 1
                
                # Check first 5 rows in detail
                if i < 5:
                    print(f"\nRow {i+1} details:")
                    print(f"  Date: '{row.get('Date (UTC)', '')}'")
                    print(f"  Amount: '{row.get('Amount', '')}'")
                    print(f"  Merchant: '{row.get('Clean Merchant Name', '')}'")
                    print(f"  Status: '{row.get('Status', '')}'")
                
                # Extract and validate fields
                date_str = row.get('Date (UTC)', '')
                amount_str = row.get('Amount', '')
                merchant = row.get('Clean Merchant Name', '') or row.get('Merchant', '')
                
                # Check amount
                try:
                    amount = abs(float(amount_str)) if amount_str else 0.0
                    if amount <= 0:
                        zero_amounts += 1
                        continue
                except:
                    zero_amounts += 1
                    continue
                
                # Check merchant
                if not merchant:
                    empty_merchants += 1
                    continue
                
                # Check date
                try:
                    date = datetime.strptime(date_str.split()[0], '%Y-%m-%d')
                    if date.year < 2025:
                        old_dates += 1
                        continue
                except:
                    bad_dates += 1
                    if i < 10:  # Show first 10 bad dates
                        print(f"  Bad date format: '{date_str}'")
                    continue
                
                valid_transactions += 1
                
    except Exception as e:
        print(f"Error reading {csv_file}: {e}")
    
    print(f"\nSummary for {csv_file}:")
    print(f"  Total rows processed: {total_rows}")
    print(f"  Zero/invalid amounts: {zero_amounts}")
    print(f"  Bad dates: {bad_dates}")
    print(f"  Empty merchants: {empty_merchants}")
    print(f"  Old dates (pre-2025): {old_dates}")
    print(f"  Valid transactions: {valid_transactions}")

def main():
    debug_credit_card_csv('credit_card_1.csv', '4298')
    debug_credit_card_csv('credit_card_2.csv', 'Mixed')

if __name__ == "__main__":
    main()