# 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 .score_breakdown import ScoreBreakdown
from .score_distribution import ScoreDistribution


@JsonMap({})
class ReviewScoresOutputDto(BaseModel):
    """ReviewScoresOutputDto

    :param hotel_id: Id of the hotel., defaults to None
    :type hotel_id: int, optional
    :param hotel_url: URL of the hotel's page on Booking.com., defaults to None
    :type hotel_url: str, optional
    :param score_breakdown: A breakdown of scores per reviewer type and review question., defaults to None
    :type score_breakdown: List[ScoreBreakdown], optional
    :param score_distribution: A breakdown of all review scores into buckets 1 - 10., defaults to None
    :type score_distribution: List[ScoreDistribution], optional
    """

    def __init__(
        self,
        hotel_id: int = None,
        hotel_url: str = None,
        score_breakdown: List[ScoreBreakdown] = None,
        score_distribution: List[ScoreDistribution] = None,
    ):
        if hotel_id is not None:
            self.hotel_id = hotel_id
        if hotel_url is not None:
            self.hotel_url = hotel_url
        if score_breakdown is not None:
            self.score_breakdown = self._define_list(score_breakdown, ScoreBreakdown)
        if score_distribution is not None:
            self.score_distribution = self._define_list(
                score_distribution, ScoreDistribution
            )
