from django.core.management.base import BaseCommand
from django.utils import timezone
from invoices.models import InvoiceReminder
from invoices.tasks import send_reminder_email


class Command(BaseCommand):
    help = 'Send scheduled invoice reminders'
    
    def handle(self, *args, **options):
        self.stdout.write('Sending invoice reminders...')
        
        reminders = InvoiceReminder.objects.filter(
            status='PENDING',
            scheduled_date__lte=timezone.now()
        ).select_related('invoice')
        
        count = 0
        for reminder in reminders:
            try:
                send_reminder_email.delay(reminder.id)
                count += 1
            except Exception as e:
                self.stdout.write(
                    self.style.ERROR(f'Error scheduling reminder {reminder.id}: {e}')
                )
        
        self.stdout.write(
            self.style.SUCCESS(f'{count} reminders scheduled for sending')
        )