from django.contrib.auth import get_user_model
from scheduler.models import Resource, AppointmentType, AvailabilityRule, BlockedPeriod, ExceptionDay
from booking.models import Appointment

User = get_user_model()

def run():
    print("\n🔍 Verificando consistencia de datos...\n")

    errors = False

    # 1. Usuarios sin Resource
    for user in User.objects.all():
        count = Resource.objects.filter(user=user).count()
        if count == 0:
            print(f"❌ Usuario SIN resource: {user.email}")
            errors = True

    # 2. AppointmentType sin resource (M2M check)
    at_missing = AppointmentType.objects.filter(resources__isnull=True).count()
    print(f"📊 AppointmentType sin resource: {at_missing}")
    if at_missing > 0:
        errors = True

    # 3. Appointment sin resource
    ap_missing = Appointment.objects.filter(resource__isnull=True).count()
    print(f"📊 Appointments sin resource: {ap_missing}")
    if ap_missing > 0:
        errors = True

    # 4. Reglas sin resource
    ar_missing = AvailabilityRule.objects.filter(resource__isnull=True).count()
    bp_missing = BlockedPeriod.objects.filter(resource__isnull=True).count()
    ex_missing = ExceptionDay.objects.filter(resource__isnull=True).count()

    print(f"📊 AvailabilityRule sin resource: {ar_missing}")
    print(f"📊 BlockedPeriod sin resource: {bp_missing}")
    print(f"📊 ExceptionDay sin resource: {ex_missing}")

    if ar_missing > 0 or bp_missing > 0 or ex_missing > 0:
        errors = True

    print("\n----------------------------------")

    if errors:
        print("❌ INCONSISTENCIAS DETECTADAS")
    else:
        print("✅ DATOS CONSISTENTES - TODO OK")

if __name__ == "__main__":
    run()
