from django.utils import timezone from gestion_employe.models import Contrat from gestion_conge.models import Conge from django.core.mail import send_mail from gestion_salle.models import Reservation QUOTA_CONGE_ANNUEL = 30 NOMBRE_PAGINATION = 8 DEBUT_RAPPEL = 60 DUREE_FIN_CONTRAT = 90 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_email(type_notification, utilisateur, contexte=None): sujet = "" message = "" nom = f"{utilisateur.first_name} {utilisateur.last_name}" if type_notification == "reservation_creee": sujet = "Confirmation de votre réservation" message = f"Bonjour {nom}, votre réservation a été enregistrée." elif type_notification == "reservation_validee": sujet = "Réservation validée" message = f"Bonjour {nom}, votre réservation a été validée." elif type_notification == "reservation_refusee": sujet = "Réservation refusée" message = f"Bonjour {nom}, votre réservation a été refusée." elif type_notification == "reservation_annulee": sujet = "Réservation annulée" message = f"Bonjour {nom}, votre réservation a été annulée." elif type_notification == "lien_zoom": sujet = "Lien Zoom ajouté" message = f"Bonjour {nom}, un lien Zoom a été ajouté à votre réservation : {Reservation.lien_zoom}" send_mail( sujet, message, "admin@tonsite.com", [utilisateur.email], fail_silently=False, )