"""
Скрипт для тестирования создания видеокомнаты через Django API.
Использование: python manage.py shell < test_video_room.py
"""

from apps.schedule.models import Lesson
from apps.users.models import User, Client
from apps.video.models import VideoRoom
from apps.video.services import get_sfu_client
from django.utils import timezone
from datetime import timedelta
import uuid

# Получаем пользователей
mentor = User.objects.filter(role='mentor').first()
client_user = User.objects.filter(role='client').first()

if not mentor or not client_user:
    print("❌ Не найдены пользователи (mentor или client)")
    exit(1)

client_obj = Client.objects.filter(user=client_user).first()
if not client_obj:
    print("❌ Не найден объект Client")
    exit(1)

print(f"✅ Mentor: {mentor.email}")
print(f"✅ Client: {client_obj.user.email}")

# Ищем или создаем занятие
lesson = Lesson.objects.filter(
    mentor=mentor,
    client=client_obj,
    status__in=['scheduled', 'in_progress']
).first()

if not lesson:
    # Создаем тестовое занятие
    start_time = timezone.now() + timedelta(hours=1)
    lesson = Lesson.objects.create(
        mentor=mentor,
        client=client_obj,
        title='Тестовое занятие для видеоконференции',
        start_time=start_time,
        end_time=start_time + timedelta(minutes=60),
        duration=60,
        status='scheduled'
    )
    print(f"✅ Создано тестовое занятие: {lesson.id}")
else:
    print(f"✅ Найдено занятие: {lesson.id}")

# Проверяем, есть ли уже видеокомната
if hasattr(lesson, 'video_room'):
    print(f"⚠️ Видеокомната уже существует: {lesson.video_room.room_id}")
    video_room = lesson.video_room
else:
    # Создаем видеокомнату
    video_room = VideoRoom.objects.create(
        lesson=lesson,
        mentor=mentor,
        client=client_obj.user,
        is_recording=False,
        max_participants=2
    )
    print(f"✅ Создана видеокомната: {video_room.room_id}")

# Проверяем создание в sfu-server
sfu_client = get_sfu_client()
try:
    if sfu_client.health_check():
        print("✅ SFU server доступен")
        
        # Проверяем, существует ли комната в sfu-server
        try:
            room_info = sfu_client.get_room(str(video_room.room_id))
            print(f"✅ Комната существует в sfu-server: {room_info}")
        except Exception as e:
            print(f"⚠️ Комната не найдена в sfu-server, создаем...")
            result = sfu_client.create_room(str(video_room.room_id))
            print(f"✅ Комната создана в sfu-server: {result}")
    else:
        print("❌ SFU server недоступен")
except Exception as e:
    print(f"❌ Ошибка проверки SFU server: {e}")

print(f"\n📋 Информация о видеокомнате:")
print(f"   Room ID: {video_room.room_id}")
print(f"   Lesson: {lesson.title}")
print(f"   Mentor: {mentor.email}")
print(f"   Client: {client_obj.user.email}")
print(f"   Status: {video_room.status}")
print(f"\n🔗 URL для подключения:")
print(f"   Frontend: http://localhost:3000/video/room/{video_room.room_id}")
print(f"   WebSocket: ws://localhost:7001/ws/{video_room.room_id}")

