from django.core.management.base import BaseCommand

from api.models import TtAcademicTerm, TtActivity, TtSetting, TtStudentSet
from api.utils import convert_to_redis_week, bulk_sync_to_redis, recalculate_resource_map, get_resource_map_redis_data
from backend.redis_client import redis_client

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

        student_set_ids = set()
        models = TtActivity.objects.filter(
            is_variant=1,
            variant_parent_id__isnull=False,
        ).prefetch_related("student_set").all()

        total = 0
        for val in models:
            total += 1
            activity_student_set = set(ss.id for ss in val.student_set.all())
            student_set_ids.update(activity_student_set)
            redis_data["update"].setdefault(redis_table, []).append({
                "id": val.id,
                "student_sets": list(activity_student_set),
            })

        # student_set_count = 0
        # student_sets = TtStudentSet.objects.filter(id__in=list(student_set_ids)).prefetch_related("activity")
        # for val in student_sets:
        #     student_set_count += 1
        #     scheduled_activity_ids = []
        #     for ss_activity in val.activity.all():
        #         if ss_activity.scheduled:
        #             scheduled_activity_ids.append(ss_activity.id)
        #     redis_data["update"].setdefault(redis_student_set_table, []).append({
        #         "id": val.id,
        #         "allocated_activity_ids": list(scheduled_activity_ids),
        #     })
        bulk_sync_to_redis(redis_client, redis_data)
        print("activity count:"+str(total))
        # print("student set count:"+str(student_set_count))

