from django.utils import timezone
from gestion_employe.models import Contrat, Employe
from gestion_conge.models import Conge


QUOTA_CONGE_ANNUEL = 30
NOMBRE_PAGINATION = 8
DEBUT_RAPPEL = 60
DUREE_FIN_CONTRAT = 90
# EMAIL_ASSISTANTE_DE_DIRECTION = list(Employe.objects.filter(fonction="assistant_direction").values_list('user__email', flat=True))

def solde_conge(employe):
    """Fonction de calcul du solde de congé restant l'employé"""
    contrat = Contrat.objects.filter(employe=employe, statut='actif').order_by('-date_debut').first()

    if contrat is None or not contrat.date_debut:
        return {
            "success": False, 
            "message": "Votre contrat de travail n'a pas été correctement renseigner. Veuillez contacter les ressources humaines."
        }

    conges = Conge.objects.filter(employe=employe, validation_direction=True, date_fin__year = timezone.now().date().year)
    jours_conges_valider = sum([conge.nombre_jours for conge in conges])

    if jours_conges_valider >= QUOTA_CONGE_ANNUEL:
        return {
            "success": False,
            "message": "Vous avez atteint le nombre maximal de jours de congés. Veuillez contacter l'administration."
        }

    return {
        "success": True,
        "quota_annuel": QUOTA_CONGE_ANNUEL - jours_conges_valider,
        "nombre_jours_valide": jours_conges_valider
    }

def envoyer_mail(sujet, message, destinataires):
    """Fonction d'envoi de mail"""
    from django.core.mail import send_mail
    from django.conf import settings

    send_mail(
        sujet,
        message,
        settings.EMAIL_HOST_USER,
        destinataires,
        fail_silently=False,
    )

def destinataire_mail_demande_conges(employe):
    """Fonction de récupération des destinataires pour les mails de demande de congés"""
    if employe.chef:
        return EMAIL_ASSISTANTE_DE_DIRECTION
    else:
        if employe.departement:
            chefs_departement = Employe.objects.filter(departement=employe.departement, chef=True)
            return list(chefs_departement.values_list('user__email', flat=True))
