# Fails: invoices/management/commands/izrakstit_abonementus.py
from django.core.management.base import BaseCommand
from django.utils import timezone
from django.core.files.base import ContentFile
from invoices.models import Abonements, Rekkins
from invoices.utils import render_to_pdf
import datetime

class Command(BaseCommand):
    help = 'Automātiski izraksta rēķinus aktīviem abonementiem, ģenerē PDF un izsūta caur Telegram'

    def handle(self, *args, **options):
        sodiena = timezone.now().date()
        aktivi_abonementi = Abonements.objects.filter(aktivs=True, izrakstisanas_diena=sodiena.day)
        
        izveidoti = 0
        for ab in aktivi_abonementi:
            # Izveidojam rēķina numuru (piem: INV-2024-04-ID)
            jauns_numurs = f"INV-{sodiena.year}-{sodiena.month:02d}-{ab.id}"
            
            # Pārbaudām, vai šomēnes šāds rēķins jau nav izrakstīts
            if not Rekkins.objects.filter(numurs=jauns_numurs).exists():
                rekin = Rekkins.objects.create(
                    klients=ab.klients,
                    projekts=ab.projekts,
                    numurs=jauns_numurs,
                    summa=ab.summa,
                    apraksts=ab.apraksts,
                    izrakstits=sodiena,
                    termins=sodiena + datetime.timedelta(days=7) # Apmaksa 7 dienu laikā
                )
                
                # Generēt PDF
                data = {
                    'numurs': rekin.numurs,
                    'klients': rekin.klients,
                    'projekts': rekin.projekts,
                    'summa': rekin.summa,
                    'apraksts': rekin.apraksts,
                    'izrakstits': rekin.izrakstits,
                    'termins': rekin.termins,
                }
                pdf_bytes = render_to_pdf('invoices/invoice_pdf.html', data)
                
                if pdf_bytes:
                    faila_nosaukums = f"Rekins_{rekin.numurs}.pdf"
                    rekin.pdf_fails.save(faila_nosaukums, ContentFile(pdf_bytes), save=True)
                    
                    # Nosūta uz Telegram
                    if rekin.klients.telegram_id:
                        from telegram_bot.handlers import send_telegram_document, send_message
                        send_message(rekin.klients.telegram_id, f"📝 Sveiks! Šeit ir tavs ikmēneša rēķins: *{rekin.apraksts}*")
                        try:
                            send_telegram_document(rekin.klients.telegram_id, rekin.pdf_fails.path)
                        except Exception as e:
                            self.stdout.write(self.style.ERROR(f"Kļūda Telegram PDF sūtīšanā: {e}"))
                            
                izveidoti += 1
        
        self.stdout.write(self.style.SUCCESS(f'Veiksmīgi izveidoti {izveidoti} abonementu rēķini.'))