"""Go Digit motor policy parser."""

from app.parsers.helpers import make_parser

GO_DIGIT_PATTERNS: list[tuple[str, str, float]] = [
    (
        "policy_number",
        r"Policy\s+Number\s*[:\-]?\s*(D[A-Z0-9/\-]{6,30})",
        0.94,
    ),
    (
        "policy_number",
        r"Policy\s+No\.?\s*(D[A-Z0-9/\-]{6,30})",
        0.93,
    ),
    (
        "policy_number",
        r"\bPolicy\s+No:\s*(D\d{6,12}[A-Z]{0,4})\b",
        0.92,
    ),
    (
        "customer_name",
        r"Insured\s+Name\s*:?\s*(?:MR\.?|MRS\.?|MS\.?)?\s*([A-Za-z][A-Za-z\s\.]{2,60}?)(?:\s+Previous|\s+Period|\s+Address)",
        0.92,
    ),
    (
        "customer_name",
        r"Name\s*:?\s*([A-Z][A-Za-z\s\.]{2,60}?)(?:\s+Partner|\s+Policy|\s+Vehicle)",
        0.88,
    ),
    (
        "vehicle_registration_number",
        r"Vehicle\s+Registration\s+No\.?\s*([A-Z0-9][A-Z0-9\s\-]{4,20})",
        0.93,
    ),
    (
        "policy_end_date",
        r"To\s+(\d{1,2}-[A-Z]{3}-\d{4})",
        0.92,
    ),
    (
        "policy_end_date",
        r"Period\s+of\s+Own\s+Damage\s*:?\s*\d{1,2}-[A-Z]{3}-\d{4}[^\d]{0,40}To\s+(\d{1,2}-[A-Z]{3}-\d{4})",
        0.9,
    ),
    (
        "policy_end_date",
        r"covering\s+the\s+period\s+from\s+[A-Za-z]+\s+\d{1,2},?\s+\d{4},?\s+to\s+([A-Za-z]+\s+\d{1,2},?\s+\d{4})",
        0.85,
    ),
    (
        "policy_start_date",
        r"From\s+(\d{1,2}-[A-Z]{3}-\d{4})",
        0.88,
    ),
    (
        "mobile_number",
        r"Mobile\s+Number\s*:?\s*(?:\+91[\s-]?)?([6-9]\d{9})",
        0.9,
    ),
    (
        "email_address",
        r"([a-zA-Z0-9._%+\-]+@godigit\.com)",
        0.9,
    ),
    (
        "engine_number",
        r"Engine\s*(?:No\.?|Number)\s*[:\-]?\s*([A-Z0-9]{5,20})",
        0.88,
    ),
    (
        "chassis_number",
        r"Chassis\s*(?:No\.?|Number)\s*[:\-]?\s*([A-Z0-9]{5,20})",
        0.88,
    ),
    (
        "premium_amount",
        r"Total\s+[Pp]remium\s*(?:for\s+the\s+policy\s+is\s+INR\s+)?([\d,]+(?:\.\d{2})?)",
        0.88,
    ),
    (
        "premium_amount",
        r"total\s+premium\s+of\s+[₹Rs\.?\s]*([\d,]+(?:\.\d{2})?)",
        0.85,
    ),
]

parse_go_digit = make_parser("go_digit", "Go Digit", GO_DIGIT_PATTERNS)
