from enum import Enum

from backend.app.db.models.uploaded_file import FileTypeEnum


class FileDownloadButtonType(Enum):
    ASSESSOR_HUB_SITENOTE_REPORT = 11
    CERTIFICATE = 9
    SITENOTE_REPORT = 8
    RAW_XML = 7
    SAP_WORK_SHEET = 15


REPORT_TYPES = [
    FileDownloadButtonType.ASSESSOR_HUB_SITENOTE_REPORT.value,
    FileDownloadButtonType.SITENOTE_REPORT.value,
    FileDownloadButtonType.RAW_XML.value,
]


def map_report_type_to_db_file_type(report_type: int) -> FileTypeEnum:
    match report_type:
        case FileDownloadButtonType.ASSESSOR_HUB_SITENOTE_REPORT.value:
            return FileTypeEnum.ECMK_SITE_NOTE
        case FileDownloadButtonType.SITENOTE_REPORT.value:
            return FileTypeEnum.ECMK_RD_SAP_SITE_NOTE
        case FileDownloadButtonType.RAW_XML.value:
            return FileTypeEnum.ECMK_SURVEY_XML
        case _:
            raise ValueError("Unknown report type")


def build_report_selector(report_type: int) -> str:
    return f"a.download-report-btn[data-report-type='{report_type}']"


def build_property_id(address: str, postcode: str) -> str:
    number = address.split(" ")[0]
    postcode_clean = postcode.replace(" ", "").upper()
    return f"{number}{postcode_clean}"
