# This file was generated by liblab | https://liblab.com/

from __future__ import annotations
from typing import List
from .utils.json_map import JsonMap
from .base import BaseModel
from .lazy_translated_string import LazyTranslatedString
from .coordinates_dto import CoordinatesDto


@JsonMap({})
class LocationDto(BaseModel):
    """All location related information of this accommodation property.

    :param address: Translated accommodation address., defaults to None
    :type address: LazyTranslatedString, optional
    :param city: A signed integer number that uniquely identifies a city., defaults to None
    :type city: int, optional
    :param coordinates: A signed integer number that uniquely identifies a city., defaults to None
    :type coordinates: CoordinatesDto, optional
    :param country: A two-letter code that uniquely identifies a country. This code is defined by the ISO 3166-1 alpha-2 standard (ISO2) as described here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. , defaults to None
    :type country: str, optional
    :param districts: A signed integer number that uniquely identifies a district. Typically, districts define known areas within a city., defaults to None
    :type districts: List[int], optional
    :param postal_code: postal_code, defaults to None
    :type postal_code: str, optional
    :param regions: A signed integer number that uniquely identifies a geographical region. Regions usually define official administrative areas within a country, but may also include multiple countries and in some cases un-official but popular designations for geographical areas. An example of a region that crosses multiple countries is the Alps in Europe. , defaults to None
    :type regions: List[int], optional
    """

    def __init__(
        self,
        address: LazyTranslatedString = None,
        city: int = None,
        coordinates: CoordinatesDto = None,
        country: str = None,
        districts: List[int] = None,
        postal_code: str = None,
        regions: List[int] = None,
    ):
        if address is not None:
            self.address = self._define_object(address, LazyTranslatedString)
        if city is not None:
            self.city = city
        if coordinates is not None:
            self.coordinates = self._define_object(coordinates, CoordinatesDto)
        if country is not None:
            self.country = country
        if districts is not None:
            self.districts = districts
        if postal_code is not None:
            self.postal_code = postal_code
        if regions is not None:
            self.regions = regions
