#!/usr/bin/env python
"""
Quick IPN status checker - run this on production for instant diagnosis
Usage: python quick_ipn_check.py
"""

import pymysql
from datetime import datetime, timedelta

# Production database credentials
DB_CONFIG = {
    'host': 'localhost',
    'user': 'xygbfpsg_graz',
    'password': 'j.ez-xy6##y.rllB',
    'database': 'xygbfpsg_loans',
    'charset': 'utf8mb4',
}

def quick_check():
    # Connect directly to MySQL
    conn = pymysql.connect(**DB_CONFIG)
    cursor = conn.cursor()
    
    # Last 24 hours
    yesterday = (datetime.now() - timedelta(hours=24)).strftime('%Y-%m-%d %H:%M:%S')
    
    # Count IPNs
    cursor.execute("SELECT COUNT(*) FROM sasapay_ipn_logs WHERE created_at >= %s", (yesterday,))
    ipns = cursor.fetchone()[0]
    
    # Count payments
    cursor.execute("SELECT COUNT(*) FROM repayments WHERE created_at >= %s AND payment_source = 'automatic'", (yesterday,))
    auto = cursor.fetchone()[0]
    
    cursor.execute("SELECT COUNT(*) FROM repayments WHERE created_at >= %s AND payment_source = 'manual'", (yesterday,))
    manual = cursor.fetchone()[0]
    
    total = auto + manual
    
    print("\n" + "="*60)
    print("QUICK IPN STATUS (Last 24 hours)")
    print("="*60)
    print(f"\n📨 IPNs received from SasaPay: {ipns}")
    print(f"💰 Payments recorded:")
    print(f"   ⚡ Automatic: {auto}")
    print(f"   ✋ Manual: {manual}")
    
    if ipns == 0:
        print("\n❌ PROBLEM: No IPNs received!")
        print("   → SasaPay is NOT sending payment notifications")
        print("   → Configure IPN URL in SasaPay Merchant Portal")
        print("   → URL: https://grazuri.uzuriapps.xyz/payments/sasapay/ipn/")
    elif manual > auto:
        print("\n⚠️  WARNING: More manual than automatic payments")
        print("   → IPNs arriving but some are failing")
        print("   → Run: python diagnose_production_ipn.py")
        print("   → Check: /payments/sasapay/ipn-gaps/")
    else:
        print("\n✅ System appears healthy")
        print("   → IPNs being received and processed")
    
    # Show latest IPN
    cursor.execute("""
        SELECT created_at, processing_status, trans_id 
        FROM sasapay_ipn_logs 
        ORDER BY created_at DESC 
        LIMIT 1
    """)
    latest = cursor.fetchone()
    
    if latest:
        print(f"\n📋 Latest IPN:")
        print(f"   Time: {latest[0]}")
        print(f"   Status: {latest[1]}")
        print(f"   TransID: {latest[2] or 'N/A'}")
    else:
        print(f"\n📋 No IPNs in database")
        print(f"   → IPN URL has never been configured")
    
    print("\n" + "="*60 + "\n")
    
    cursor.close()
    conn.close()

if __name__ == '__main__':
    try:
        quick_check()
    except Exception as e:
        print(f"\n❌ Error: {e}\n")
        import traceback
        traceback.print_exc()
