from django.core.management.base import BaseCommand

from api.models import TtStaff, TtLocation, TtStudentSet, TtActivityTemplate, TtActivity, TtModule, TtActivityWeek
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_table = "activity"

        module_code = [
            'DMED-OCT2026-MDC1013-FT',
            'DMED-OCT2026-MDC1023-FT',
            'DMED-OCT2026-MDC1033-FT',
            'DMED-OCT2026-MDC1042-FT',
            'DMED-OCT2026-MDC1052-FT',
        ]
        total = 0
        module_ids = list(TtModule.objects.filter(code__in=module_code).values_list("id", flat=True))
        activities = TtActivity.objects.filter(module_id__in=module_ids,scheduled=0).select_related("activity_template")
        activity_ids = []
        for val in activities:
            total += 1
            activity_ids.append(val.id)
            val.week_pattern_id = val.activity_template.week_pattern_id
            val.sequence_number = val.activity_template.sequence_number

            redis_data["update"].setdefault(redis_table, []).append({
                "id": val.id,
                "sequence_number": val.activity_template.sequence_number,
                "week_pattern_id": val.activity_template.week_pattern_id,
                "week_pattern": []
            })
        TtActivity.objects.bulk_update(activities, ["week_pattern_id", "sequence_number"])
        TtActivityWeek.objects.filter(activity_id__in=activity_ids).delete()
        bulk_sync_to_redis(redis_client, redis_data)
        print("activity count:"+str(total))