from django.contrib.auth.decorators import login_required
from django.contrib import messages
from django.shortcuts import get_object_or_404, redirect
from django.views.decorators.http import require_POST

from accounts.decorators import seeker_required
from accounts.visibility import get_visible_company_or_404

from .models import CompanyFollow


@login_required
@seeker_required
@require_POST
def toggle_company_follow(request, slug):
    company = get_visible_company_or_404(request, slug)
    follow = CompanyFollow.objects.filter(user=request.user, company=company).first()

    if follow:
        follow.delete()
        messages.info(request, f'You unfollowed {company.name}.')
    else:
        CompanyFollow.objects.create(user=request.user, company=company)
        messages.success(request, f'You are now following {company.name}. You\'ll be notified about new jobs and updates.')

    next_url = request.POST.get('next') or company.get_absolute_url()
    return redirect(next_url)


def user_follows_company(user, company):
    if not user.is_authenticated:
        return False
    return CompanyFollow.objects.filter(user=user, company=company).exists()
