
from django.core.management.base import BaseCommand
from django.db.models import Q
from management.models.vacations import Vacations
from management.models import VacationsStates
from management.models.user import User
from django.template.loader import render_to_string
from django.core.mail import EmailMessage
import os

class Command(BaseCommand):
    def handle(self, *args, **kwargs):
        admin_users = User.objects.filter(role=1)
        vacations_non_approved = Vacations.objects.exclude(Q(state=9) | Q(state=10)| Q(state=19))
        for user in admin_users:
            vacation_states = VacationsStates.objects.filter(
                vacation__in=vacations_non_approved,
                operation=None,
                approver=user
            ).exclude(operation_date__isnull=True)

            print(f"Admin {user.id} ha {vacation_states.count()} stati non approvati")
            count = vacation_states.count()
            
            if count > 0:
                context = {
                    'user': user,
                    'vacation_states': vacation_states,
                    'vc_count': count
                    }
                                    
                html_content= render_to_string(f"email/common/admin_reminder.html", context)

                email = EmailMessage(
                subject="Reminder approvazioni",
                body=html_content,
                from_email=os.getenv("SMTP_SENDER_EMAIL"),
                to=[user.mail],
                )
                
                email.content_subtype = "html"
                email.send()
