import json
from django.db.models.signals import post_save, post_delete
from django.dispatch import receiver
from .models import Classroom
from django.conf import settings
import os

def export_classroom_data():
    classrooms_data = []
    # Use select_related to optimize database queries
    classrooms = Classroom.objects.select_related('status').all()
    for classroom in classrooms:
        classrooms_data.append({
            'classroom_id': classroom.classroom_id,
            'room_number': classroom.room_number,
            'slug': classroom.slug,
            'building': classroom.building,
            'capacity': classroom.capacity,
            'status': classroom.status.title if classroom.status else None,
        })

    file_path = os.path.join(settings.DATA_CACHE_DIR, 'classrooms.json')
    os.makedirs(os.path.dirname(file_path), exist_ok=True)
    with open(file_path, 'w') as f:
        json.dump(classrooms_data, f, indent=4)

@receiver(post_save, sender=Classroom)
def classroom_post_save(sender, instance, created, **kwargs):
    export_classroom_data()

@receiver(post_delete, sender=Classroom)
def classroom_post_delete(sender, instance, **kwargs):
    export_classroom_data()
