from django.core.management.base import BaseCommand

from api.models import TtStaff, TtLocation, TtStudentSet, TtActivityTemplate, TtActivity, TtModule
from api.utils import convert_to_redis_week, bulk_sync_to_redis
from backend.redis_client import redis_client

class Command(BaseCommand):
    def handle(self, *args, **options):
        redis_data={
            "update":{},
        }
        redis_activity_table = "activity"

        activities = TtActivity.objects.all()
        for activity in activities:
            redis_data["update"].setdefault(redis_activity_table, []).append({
                "id": activity.id,
                "availability_pattern": activity.availability_pattern,
            })

        bulk_sync_to_redis(redis_client, redis_data)

        redis_data={
            "update":{},
        }
        redis_table = "activity_template"

        models = TtActivityTemplate.objects.all()
        for val in models:
            redis_data["update"].setdefault(redis_table, []).append({
                "id": val.id,
                "availability_pattern": val.availability_pattern,
            })

        bulk_sync_to_redis(redis_client, redis_data)

        redis_data={
            "update":{},
        }
        redis_table = "student_set"

        models = TtStudentSet.objects.all()
        for val in models:
            redis_data["update"].setdefault(redis_table, []).append({
                "id": val.id,
                "availability_pattern": val.availability_pattern,
            })

        bulk_sync_to_redis(redis_client, redis_data)

        redis_data={
            "update":{},
        }
        redis_table = "module"

        models = TtModule.objects.all()
        for val in models:
            redis_data["update"].setdefault(redis_table, []).append({
                "id": val.id,
                "availability_pattern": val.availability_pattern,
            })

        bulk_sync_to_redis(redis_client, redis_data)

