#!/usr/bin/env python
"""
Script de test simple pour les modèles users avec gestion des cas existants
"""

import os
import sys
import django

# Configuration Django
sys.path.append("/Users/awf/Projects/clients/COOP-CA_AMIFOND/backend")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
django.setup()

from django.contrib.auth import get_user_model
from apps.users.models import UserProfile, IdentityDocument, UserActivity, UserSession
from apps.core.storage_backend import get_storage_info

User = get_user_model()


def main():
    """Test principal"""
    print("🚀 Test des modèles Users - Version Simple")
    print("=" * 50)

    # Statistiques
    users_count = User.objects.count()
    profiles_count = UserProfile.objects.count()
    documents_count = IdentityDocument.objects.count()
    activities_count = UserActivity.objects.count()
    sessions_count = UserSession.objects.count()

    print(f"📊 Statistiques actuelles:")
    print(f"   👥 Utilisateurs: {users_count}")
    print(f"   📋 Profils: {profiles_count}")
    print(f"   📄 Documents: {documents_count}")
    print(f"   📝 Activités: {activities_count}")
    print(f"   📱 Sessions: {sessions_count}")

    # Test du stockage
    storage_info = get_storage_info()
    print(f"\n💾 Système de stockage:")
    print(f"   Type: {storage_info['type'].upper()}")
    print(f"   Config: {storage_info}")

    # Test d'un profil existant
    if profiles_count > 0:
        profile = UserProfile.objects.first()
        print(f"\n👤 Profil test:")
        print(f"   Nom: {profile.get_full_name}")
        print(f"   Email: {profile.user.email}")
        print(f"   Completion: {profile.get_completion_percentage()}%")

        # Test des URLs
        print(f"   Avatar URL: {profile.avatar_url or 'Pas d avatar'}")
        print(f"   Thumbnail URL: {profile.avatar_thumbnail_url or 'Pas de thumbnail'}")

    # Test des sessions actives
    if sessions_count > 0:
        print(f"\n📱 Sessions actives:")
        for session in UserSession.objects.filter(is_active=True)[:3]:
            print(
                f"   • {session.user.email} - {session.device_type} ({session.browser})"
            )

    # Test des dernières activités
    if activities_count > 0:
        print(f"\n📝 Dernières activités:")
        for activity in UserActivity.objects.all()[:5]:
            print(
                f"   • {activity.user.email} - {activity.get_activity_type_display()}"
            )

    # Test des fonctions utilitaires
    from apps.users.utils import validate_phone_number, format_phone_number

    print(f"\n📱 Test validation téléphone:")
    test_phones = ["+237690123456", "690123456", "123456"]
    for phone in test_phones:
        is_valid = validate_phone_number(phone)
        formatted = format_phone_number(phone)
        print(f"   {phone} → {'✅' if is_valid else '❌'} → {formatted}")

    print("\n" + "=" * 50)
    print("✅ Tests terminés avec succès!")


if __name__ == "__main__":
    main()
