# accounts/signals.py
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.utils import timezone
from django.core.mail import send_mail
from django.template.loader import render_to_string
from django.conf import settings
from users.models import CustomUser

@receiver(post_save, sender=CustomUser)
def email_when_pins_completed(sender, instance: CustomUser, created, **kwargs):
    if created:
        return
    if instance.pins_set_at and not instance.pins_email_sent_at and instance.email:
        html = render_to_string('email/pins_set_success.html', {"user": instance, "when": timezone.localtime(instance.pins_set_at)})
        send_mail(
            subject="Viral Pe: PINs set successfully",
            message="",
            from_email=settings.DEFAULT_FROM_EMAIL,
            recipient_list=[instance.email],
            html_message=html,
            fail_silently=False,
        )
        instance.pins_email_sent_at = timezone.now()
        instance.save(update_fields=['pins_email_sent_at'])
