from django.core.management.base import BaseCommand
from django.db.models import Q

from apps.parks.models import Park


class Command(BaseCommand):
    help = "Update total_rides and total_roller_coasters counts for all parks"

    def handle(self, *args, **options):
        parks = Park.objects.all()
        operating_rides = Q(status="OPERATING")
        updated = 0

        for park in parks:
            # Count total operating rides
            total_rides = park.rides.filter(operating_rides).count()

            # Count total operating roller coasters
            total_coasters = park.rides.filter(operating_rides, category="RC").count()

            # Update park counts
            Park.objects.filter(id=park.id).update(total_rides=total_rides, total_roller_coasters=total_coasters)
            updated += 1

        self.stdout.write(self.style.SUCCESS(f"Successfully updated counts for {updated} parks"))
