from __future__ import annotations

from bs4 import BeautifulSoup
from jobspy.model import JobType, Location
from jobspy.util import get_enum_from_job_type


def parse_job_type(soup: BeautifulSoup |str) -> list[JobType] | None:
    """
    Gets the job type from the job page
    """
    if isinstance(soup, str):
        soup = BeautifulSoup(soup, "html.parser")
    job_type_tag = soup.find("span", class_="job-type")
    if job_type_tag:
        job_type_str = job_type_tag.get_text(strip=True).lower().replace("-", "")
        return [get_enum_from_job_type(job_type_str)] if job_type_str else None
    return None


def parse_company_industry(soup: BeautifulSoup | str) -> str | None:
    """
    Gets the company industry from the job page
    """
    if isinstance(soup, str):
        soup = BeautifulSoup(soup, "html.parser")
    industry_tag = soup.find("span", class_="industry")
    return industry_tag.get_text(strip=True) if industry_tag else None


def is_job_remote(title: str, description: str, location: Location) -> bool:
    """
    Searches the title, description, and location to check if the job is remote
    """
    remote_keywords = ["remote", "work from home", "wfh"]
    location_str = location.display_location()
    full_string = f"{title} {description} {location_str}".lower()
    return any(keyword in full_string for keyword in remote_keywords)