from django.core.management.base import BaseCommand
from apps.reporting.scheduler import start_report_scheduler
import time
import signal
import sys
import os

class Command(BaseCommand):
    help = 'Run the APScheduler for automated reports'

    def handle(self, *args, **options):
        self.stdout.write(self.style.SUCCESS('Starting Report Scheduler...'))
        
        # Handle graceful shutdown
        def signal_handler(sig, frame):
            self.stdout.write(self.style.WARNING('Shutting down scheduler...'))
            from apps.reporting.scheduler import stop_report_scheduler
            stop_report_scheduler()
            sys.exit(0)
        
        signal.signal(signal.SIGINT, signal_handler)
        signal.signal(signal.SIGTERM, signal_handler)
        
        # Start scheduler
        start_report_scheduler()
        
        # Keep the process alive
        try:
            while True:
                time.sleep(60)
        except KeyboardInterrupt:
            self.stdout.write(self.style.WARNING('Scheduler stopped'))