from django.core.management.base import BaseCommand
from invoices.models import Invoice
from invoices.services import InvoiceService


class Command(BaseCommand):
    help = 'Generate PDFs for invoices that do not have one'
    
    def add_arguments(self, parser):
        parser.add_argument(
            '--regenerate',
            action='store_true',
            help='Regenerate PDFs for all invoices',
        )
    
    def handle(self, *args, **options):
        self.stdout.write('Generating invoice PDFs...')
        
        if options['regenerate']:
            invoices = Invoice.objects.all()
        else:
            invoices = Invoice.objects.filter(pdf_file='')
        
        service = InvoiceService()
        count = 0
        errors = 0
        
        for invoice in invoices:
            try:
                service.generate_pdf(invoice)
                count += 1
                self.stdout.write(f'Generated PDF for {invoice.invoice_number}')
            except Exception as e:
                errors += 1
                self.stdout.write(
                    self.style.ERROR(
                        f'Error generating PDF for {invoice.invoice_number}: {e}'
                    )
                )
        
        self.stdout.write(
            self.style.SUCCESS(
                f'{count} PDFs generated successfully, {errors} errors'
            )
        )

