from django.db.models.signals import post_delete, post_save
from django.dispatch import receiver

from .benefits import (
    revoke_company_subscription_benefits,
    revoke_seeker_subscription_benefits,
    sync_company_subscription_benefits,
    sync_seeker_subscription_benefits,
)
from .models import CompanySubscription, SeekerSubscription


@receiver(post_save, sender=SeekerSubscription)
def apply_seeker_subscription_benefits(sender, instance, **kwargs):
    sync_seeker_subscription_benefits(instance)


@receiver(post_delete, sender=SeekerSubscription)
def remove_seeker_subscription_benefits(sender, instance, **kwargs):
    revoke_seeker_subscription_benefits(instance.user)


@receiver(post_save, sender=CompanySubscription)
def apply_company_subscription_benefits(sender, instance, **kwargs):
    sync_company_subscription_benefits(instance)


@receiver(post_delete, sender=CompanySubscription)
def remove_company_subscription_benefits(sender, instance, **kwargs):
    revoke_company_subscription_benefits(instance.company)
