# 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 .coordinates_dto import CoordinatesDto
from .checkin_checkout_times_dto import CheckinCheckoutTimesDto
from .hotel_photo_dto import HotelPhotoDto


@JsonMap({})
class HotelDataDto(BaseModel):
    """Hotel specific information.

    :param address: The street address of the hotel., defaults to None
    :type address: str, optional
    :param city_id: Id of the city where this property is located., defaults to None
    :type city_id: int, optional
    :param country: Two-letter ISO country code of the hotel., defaults to None
    :type country: str, optional
    :param location: A signed integer number that uniquely identifies a city., defaults to None
    :type location: CoordinatesDto, optional
    :param zip: Hotel ZIP code, defaults to None
    :type zip: str, optional
    :param currency: Three-letter ISO currency code for the hotel., defaults to None
    :type currency: str, optional
    :param checkin_checkout_times: checkin_checkout_times, defaults to None
    :type checkin_checkout_times: CheckinCheckoutTimesDto, optional
    :param hotel_photos: Photos specific information of the hotel., defaults to None
    :type hotel_photos: List[HotelPhotoDto], optional
    :param hotel_description: The description text for this hotel., defaults to None
    :type hotel_description: str, optional
    :param url: URL of the hotel's page on Booking.com., defaults to None
    :type url: str, optional
    :param deep_link_url: Deep link mobile app URL., defaults to None
    :type deep_link_url: str, optional
    :param region_ids: List of region_ids that the hotel belongs to, defaults to None
    :type region_ids: List[int], optional
    :param number_of_reviews: Number of reviews for this hotel., defaults to None
    :type number_of_reviews: int, optional
    :param review_score: Review score of this hotel., defaults to None
    :type review_score: float, optional
    :param spoken_languages: Languages spoken by the hotel's staff, defaults to None
    :type spoken_languages: List[str], optional
    """

    def __init__(
        self,
        address: str = None,
        city_id: int = None,
        country: str = None,
        location: CoordinatesDto = None,
        zip: str = None,
        currency: str = None,
        checkin_checkout_times: CheckinCheckoutTimesDto = None,
        hotel_photos: List[HotelPhotoDto] = None,
        hotel_description: str = None,
        url: str = None,
        deep_link_url: str = None,
        region_ids: List[int] = None,
        number_of_reviews: int = None,
        review_score: float = None,
        spoken_languages: List[str] = None,
    ):
        if address is not None:
            self.address = address
        if city_id is not None:
            self.city_id = city_id
        if country is not None:
            self.country = country
        if location is not None:
            self.location = self._define_object(location, CoordinatesDto)
        if zip is not None:
            self.zip = zip
        if currency is not None:
            self.currency = currency
        if checkin_checkout_times is not None:
            self.checkin_checkout_times = self._define_object(
                checkin_checkout_times, CheckinCheckoutTimesDto
            )
        if hotel_photos is not None:
            self.hotel_photos = self._define_list(hotel_photos, HotelPhotoDto)
        if hotel_description is not None:
            self.hotel_description = hotel_description
        if url is not None:
            self.url = url
        if deep_link_url is not None:
            self.deep_link_url = deep_link_url
        if region_ids is not None:
            self.region_ids = region_ids
        if number_of_reviews is not None:
            self.number_of_reviews = number_of_reviews
        if review_score is not None:
            self.review_score = review_score
        if spoken_languages is not None:
            self.spoken_languages = spoken_languages
