# 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 .bedroom_dto import BedroomDto
from .room_occupancy_dto import RoomOccupancyDto
from .room_size_dto import RoomSizeDto


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

    :param bathroom_count: bathroom_count, defaults to None
    :type bathroom_count: float, optional
    :param bedroom_count: bedroom_count, defaults to None
    :type bedroom_count: float, optional
    :param bedrooms: bedrooms, defaults to None
    :type bedrooms: List[BedroomDto], optional
    :param occupancy: occupancy, defaults to None
    :type occupancy: RoomOccupancyDto, optional
    :param room_size: room_size, defaults to None
    :type room_size: RoomSizeDto, optional
    :param room_type_id: room_type_id, defaults to None
    :type room_type_id: int, optional
    """

    def __init__(
        self,
        bathroom_count: float = None,
        bedroom_count: float = None,
        bedrooms: List[BedroomDto] = None,
        occupancy: RoomOccupancyDto = None,
        room_size: RoomSizeDto = None,
        room_type_id: int = None,
    ):
        if bathroom_count is not None:
            self.bathroom_count = bathroom_count
        if bedroom_count is not None:
            self.bedroom_count = bedroom_count
        if bedrooms is not None:
            self.bedrooms = self._define_list(bedrooms, BedroomDto)
        if occupancy is not None:
            self.occupancy = self._define_object(occupancy, RoomOccupancyDto)
        if room_size is not None:
            self.room_size = self._define_object(room_size, RoomSizeDto)
        if room_type_id is not None:
            self.room_type_id = room_type_id
