# checkin/default_fields.py
from checkin.constants import ITALIAN_PROVINCE_OPTIONS

DEFAULT_GUEST_TYPE_OPTIONS = [
    {"value": "16", "label": "16 - Single Guest"},
    {"value": "17", "label": "17 - Head of Family"},
    {"value": "18", "label": "18 - Group Leader"},
    {"value": "19", "label": "19 - Family Member"},
    {"value": "20", "label": "20 - Group Member"},
]

DEFAULT_TOURISM_TYPE_OPTIONS = [
    "Cultural",
    "Beach",
    "Conference/Business",
    "Trade Fair",
    "Sport/Fitness",
    "School",
    "Religious",
    "Social",
    "Theme Parks",
    "Spa/Health Treatments",
    "Food and Wine",
    "Cycle Tourism",
    "Excursion/Nature",
    "Other reason",
    "Not Specified",
]

DEFAULT_TRANSPORT_TYPE_OPTIONS = [
    "Car",
    "Plane",
    "Plane + Bus",
    "Plane + Shuttle/Taxi/Car",
    "Plane + Train",
    "Train",
    "Bus",
    "Caravan",
    "Boat",
    "Motorcycle",
    "Bicycle",
    "Walking",
    "Other",
    "Not Specified",
]

DEFAULT_MAIN_GUEST_FIELDS = [
    {
        "category": "Personal info",
        "fields": [
            {
                "slug": "first_name",
                "label": "First name",
                "type": "text",
                "required": False,
            },
            {
                "slug": "last_name",
                "label": "Last name",
                "type": "text",
                "required": False,
            },
            {
                "slug": "gender",
                "label": "Gender",
                "type": "select",
                "required": False,
                "options": ["male", "female", "other"],
            },
            {
                "slug": "date_of_birth",
                "label": "Date of birth",
                "type": "date",
                "required": False,
            },
            {
                "slug": "country_of_birth",
                "label": "Country of Birth",
                "type": "country",
                "required": False,
            },
            {
                "slug": "place_of_birth",
                "label": "Birth Municipality / City",
                "type": "text",
                "required": False,
            },
            {
                "slug": "nationality",
                "label": "Nationality",
                "type": "country",
                "required": False,
            },
            {
                "slug": "occupation",
                "label": "Occupation",
                "type": "text",
                "required": False,
            },
            {
                "slug": "reason_for_visit",
                "label": "Reason for visit",
                "type": "text",
                "required": False,
            },
        ],
    },
    {
        "category": "ISTAT details",
        "fields": [
            {
                "slug": "guest_type",
                "label": "Guest type",
                "type": "select",
                "required": False,
                "options": DEFAULT_GUEST_TYPE_OPTIONS,
            },
            {
                "slug": "tourism_type",
                "label": "Tourism type",
                "type": "select",
                "required": False,
                "options": DEFAULT_TOURISM_TYPE_OPTIONS,
            },
            {
                "slug": "transport_type",
                "label": "Transport type",
                "type": "select",
                "required": False,
                "options": DEFAULT_TRANSPORT_TYPE_OPTIONS,
            },
        ],
    },
    {
        "category": "Address",
        "fields": [
            {
                "slug": "street",
                "label": "Street",
                "type": "text",
                "required": False,
            },
            {
                "slug": "postal_code",
                "label": "Postal code",
                "type": "text",
                "required": False,
            },
            {
                "slug": "city",
                "label": "Residence Municipality / City",
                "type": "text",
                "required": False,
            },
            {
                "slug": "province",
                "label": "Province of Residence",
                "type": "select",
                "required": False,
                "options": ITALIAN_PROVINCE_OPTIONS,
            },
            {
                "slug": "state",
                "label": "State",
                "type": "text",
                "required": False,
            },
            {
                "slug": "country",
                "label": "Country of Residence",
                "type": "country",
                "required": False,
            },
        ],
    },
    {
        "category": "Documents",
        "fields": [
            {
                "slug": "document_type",
                "label": "Document type",
                "type": "select",
                "required": False,
                "options": ["passport", "id_card"],
            },
            {
                "slug": "document_number",
                "label": "Document number",
                "type": "text",
                "required": False,
            },
            {
                "slug": "document_issuing_country",
                "label": "Issuing country",
                "type": "country",
                "required": False,
            },
            {
                "slug": "date_of_issue",
                "label": "Date of issue",
                "type": "date",
                "required": False,
            },
            {
                "slug": "expiration_date",
                "label": "Expiration date",
                "type": "date",
                "required": False,
            },
        ],
    },
    {
        "category": "Other",
        "fields": [
            {
                "slug": "tax_code",
                "label": "Tax code",
                "type": "text",
                "required": False,
            },
            {
                "slug": "company_id",
                "label": "Company ID",
                "type": "text",
                "required": False,
            },
            {
                "slug": "attachment",
                "label": "Attachment",
                "type": "file",
                "required": False,
            },
            {
                "slug": "signature",
                "label": "Signature",
                "type": "file",
                "required": False,
            },
        ],
    },
]
DEFAULT_ADDITIONAL_GUEST_FIELDS = [
    {
        "category": "Personal info",
        "fields": [
            {
                "slug": "first_name",
                "label": "First name",
                "type": "text",
                "required": False,
            },
            {
                "slug": "last_name",
                "label": "Last name",
                "type": "text",
                "required": False,
            },
            {
                "slug": "gender",
                "label": "Gender",
                "type": "select",
                "required": False,
                "options": ["male", "female", "other"],
            },
            {
                "slug": "date_of_birth",
                "label": "Date of birth",
                "type": "date",
                "required": False,
            },
            {
                "slug": "country_of_birth",
                "label": "Country of Birth",
                "type": "country",
                "required": False,
            },
            {
                "slug": "place_of_birth",
                "label": "Birth Municipality / City",
                "type": "text",
                "required": False,
            },
            {
                "slug": "nationality",
                "label": "Nationality",
                "type": "country",
                "required": False,
            },
            {
                "slug": "occupation",
                "label": "Occupation",
                "type": "text",
                "required": False,
            },
        ],
    },
    {
        "category": "ISTAT details",
        "fields": [
            {
                "slug": "guest_type",
                "label": "Guest type",
                "type": "select",
                "required": False,
                "options": DEFAULT_GUEST_TYPE_OPTIONS,
            },
            {
                "slug": "tourism_type",
                "label": "Tourism type",
                "type": "select",
                "required": False,
                "options": DEFAULT_TOURISM_TYPE_OPTIONS,
            },
            {
                "slug": "transport_type",
                "label": "Transport type",
                "type": "select",
                "required": False,
                "options": DEFAULT_TRANSPORT_TYPE_OPTIONS,
            },
        ],
    },
    {
        "category": "Address",
        "fields": [
            {
                "slug": "street",
                "label": "Street",
                "type": "text",
                "required": False,
            },
            {
                "slug": "postal_code",
                "label": "Postal code",
                "type": "text",
                "required": False,
            },
            {
                "slug": "city",
                "label": "Residence Municipality / City",
                "type": "text",
                "required": False,
            },
            {
                "slug": "province",
                "label": "Province of Residence",
                "type": "select",
                "required": False,
                "options": ITALIAN_PROVINCE_OPTIONS,
            },
            {
                "slug": "state",
                "label": "State",
                "type": "text",
                "required": False,
            },
            {
                "slug": "country",
                "label": "Country of Residence",
                "type": "country",
                "required": False,
            },
        ],
    },
    {
        "category": "Documents",
        "fields": [
            {
                "slug": "document_type",
                "label": "Document type",
                "type": "select",
                "required": False,
                "options": ["passport", "id_card"],
            },
            {
                "slug": "document_number",
                "label": "Document number",
                "type": "text",
                "required": False,
            },
            {
                "slug": "document_issuing_country",
                "label": "Issuing country",
                "type": "country",
                "required": False,
            },
            {
                "slug": "date_of_issue",
                "label": "Date of issue",
                "type": "date",
                "required": False,
            },
            {
                "slug": "expiration_date",
                "label": "Expiration date",
                "type": "date",
                "required": False,
            },
        ],
    },
    {
        "category": "Other",
        "fields": [
            {
                "slug": "tax_code",
                "label": "Tax code",
                "type": "text",
                "required": False,
            },
            {
                "slug": "company_id",
                "label": "Company ID",
                "type": "text",
                "required": False,
            },
            {
                "slug": "attachment",
                "label": "Attachment",
                "type": "file",
                "required": False,
            },
        ],
    },
]
