from django.core.mail import EmailMessage
import os
from django.core.management.base import BaseCommand
from datetime import date, timedelta
from management.models.smartworking import Smartworking
from management.models.user import User
from django.template.loader import render_to_string


class Command(BaseCommand):
    def handle(self, *args, **kwargs):
        today = date.today()

        if today.weekday() in (5, 6):  # 5 = sabato, 6 = domenica
            return

        if today.weekday() == 4:  # venerdì
            tomorrow = today + timedelta(days=3)
        else:
            tomorrow = today + timedelta(days=1)

        sw_tomorrow_users = Smartworking.objects.filter(
            day=tomorrow, state=6
        ).values_list("user__givenName", "user__surname")

        users_to = User.objects.filter(enabled=1, external=0)

        if sw_tomorrow_users.exists():
            for user_to in users_to:
                context = {
                    "users": sw_tomorrow_users,
                    "tomorrow": tomorrow,
                }

                html_content = render_to_string(
                    "email/common/evening_sw_email.html", context
                )

                email = EmailMessage(
                    subject="Comunicazione Smartworking",
                    body=html_content,
                    from_email=os.getenv("SMTP_SENDER_EMAIL"),
                    to=[user_to.mail],
                )

                email.content_subtype = "html"
                email.send()
