import json
from django.db.models.signals import post_save, post_delete
from django.dispatch import receiver
from .models import Teacher
from django.conf import settings
import os

def export_teachers_to_json():
    teachers_data = []
    teachers = Teacher.objects.all()
    for teacher in teachers:
        teachers_data.append({
            'teacher_id': teacher.teacher_id,
            'first_name': teacher.first_name,
            'last_name': teacher.last_name,
            'code': teacher.code,
            'slug': teacher.slug,
            'email': teacher.email,
            'phone': teacher.phone,
            'department': teacher.department.department_name if teacher.department else None,
            'hire_date': str(teacher.hire_date),
            'status': teacher.status.title if teacher.status else None,
        })

    with open(os.path.join(settings.DATA_CACHE_DIR, 'teachers.json'), 'w') as f:
        json.dump(teachers_data, f, indent=4)

@receiver(post_save, sender=Teacher)
def teacher_post_save(sender, instance, created, **kwargs):
    """
    Update teachers.json when a teacher is created or updated.
    """
    export_teachers_to_json()

@receiver(post_delete, sender=Teacher)
def teacher_post_delete(sender, instance, **kwargs):
    """
    Update teachers.json when a teacher is deleted.
    """
    export_teachers_to_json()
