import json
from django.db.models.signals import post_save, post_delete
from django.dispatch import receiver
from .models import Department
from django.conf import settings
import os

def export_departments_to_json():
    departments_data = []
    departments = Department.objects.all()
    for department in departments:
        departments_data.append({
            'department_id': department.department_id,
            'department_name': department.department_name,
            'slug': department.slug,
            'department_code': department.department_code,
            'status': department.status.title if department.status else None, # Get the title of the status
            'created_at': str(department.created_at),
        })

    with open(os.path.join(settings.DATA_CACHE_DIR, 'departments.json'), 'w') as f:
        json.dump(departments_data, f, indent=4)

@receiver(post_save, sender=Department)
def department_post_save(sender, instance, created, **kwargs):
    """
    Update departments.json when a department is created or updated.
    """
    export_departments_to_json()

@receiver(post_delete, sender=Department)
def department_post_delete(sender, instance, **kwargs):
    """
    Update departments.json when a department is deleted.
    """
    export_departments_to_json()
