from __future__ import annotations

from apps.core.permissions.rep_career import VIEW_REP_JOB_APPLICATIONS
from apps.core.permissions.roles import UserRole
from apps.alumni.careers.models import JobApplication, JobListing


def user_can_view_job_listing_applications(user, listing: JobListing) -> bool:
    """Poster, superuser, admin role, or explicit core.view_rep_job_applications."""
    if not user.is_authenticated or not user.is_active:
        return False
    if user.is_superuser:
        return True
    if getattr(user, "role", "") == UserRole.ADMIN:
        return True
    if user.has_perm(VIEW_REP_JOB_APPLICATIONS):
        return True
    if listing.posted_by_id and listing.posted_by_id == user.id:
        return True
    return False


def user_can_view_job_application(user, application: JobApplication) -> bool:
    listing = application.listing
    return user_can_view_job_listing_applications(user, listing)
