from django.db.models.signals import post_save
from django.contrib.auth import get_user_model
from django.dispatch import receiver
from .models import UserInvitation
import logging

LOGGER = logging.getLogger(__name__)

Users = get_user_model()


@receiver(post_save, sender=Users)
def create_user_invitation(sender, instance, created, **kwargs):
    is_invite = getattr(instance, "_is_invite", False)

    if is_invite:
        invitor = getattr(instance, "_invitor", None)
        invitiation_link = getattr(instance, "_invitation_link", None)

        if invitor is None:
            invitor_email = "Unknown Invitor"
        else:
            invitor_email = invitor.email

        LOGGER.info(f"Creating invitation for user {instance.email}.")
        UserInvitation.objects.create(
            invitee=instance,
            invitor_email=invitor_email,
            invitation_link=invitiation_link,
        )

        LOGGER.info(f"Invitation created for user {instance.email}.")
