# coding: utf-8

from __future__ import absolute_import

from models.base_model_ import Model
from models import util


class Sit(Model):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    def __init__(self, sit_number: int = None, state: str = 'available', transport_id: int = None):  # noqa: E501

        """Sit - a model defined in Swagger

        :param sit_number: The sit_number of this Sit.  # noqa: E501
        :type sit_number: int
        :param state: The state of this Sit.  # noqa: E501
        :type state: str
        :param transport_id: The transport_id of this Sit.  # noqa: E501
        :type transport_id: int
        """
        self.types = {
            'sit_number': int,
            'state': str,
            'transport_id': int
        }

        self.attribute_map = {
            'sit_number': 'sitNumber',
            'state': 'state',
            'transport_id': 'transportId'
        }

        self._sit_number = sit_number
        self._state = state
        self._transport_id = transport_id

    @classmethod
    def from_dict(cls, dikt) -> 'Sit':
        """Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The Sit of this Sit.  # noqa: E501
        :rtype: Sit
        """
        return util.deserialize_model(dikt, cls)

    @property
    def sit_number(self) -> int:
        """Gets the sit_number of this Sit.


        :return: The sit_number of this Sit.
        :rtype: int
        """
        return self._sit_number

    @sit_number.setter
    def sit_number(self, sit_number: int):
        """Sets the sit_number of this Sit.


        :param sit_number: The sit_number of this Sit.
        :type sit_number: int
        """
        if sit_number is None:
            raise ValueError("Invalid value for `sit_number`, must not be `None`")  # noqa: E501

        self._sit_number = sit_number

    @property
    def state(self) -> str:
        """Gets the state of this Sit.


        :return: The state of this Sit.
        :rtype: str
        """
        return self._state

    @state.setter
    def state(self, state: str):
        """Sets the state of this Sit.


        :param state: The state of this Sit.
        :type state: str
        """
        allowed_values = ["available", "not available"]  # noqa: E501
        if state not in allowed_values:
            raise ValueError(
                "Invalid value for `state` ({0}), must be one of {1}"
                .format(state, allowed_values)
            )

        self._state = state

    @property
    def transport_id(self) -> int:
        """Gets the transport_id of this Sit.


        :return: The transport_id of this Sit.
        :rtype: int
        """
        return self._transport_id

    @transport_id.setter
    def transport_id(self, transport_id: int):
        """Sets the transport_id of this Sit.


        :param transport_id: The transport_id of this Sit.
        :type transport_id: int
        """
        if transport_id is None:
            raise ValueError("Invalid value for `transport_id`, must not be `None`")  # noqa: E501

        self._transport_id = transport_id
