# coding: utf-8

from __future__ import absolute_import
from datetime import date, datetime  # noqa: F401

from typing import List, Dict  # noqa: F401

from rbb_swagger_server.models.base_model_ import Model
from rbb_swagger_server import util


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

    Do not edit the class manually.
    """

    def __init__(self, detail_type: str=None, identifier: int=None, description: str=None, created: datetime=None, result: int=None, environment_name: str=None, queued_task_identifier: str=None, queued_task_state: int=None):  # noqa: E501
        """SimulationSummary - a model defined in Swagger

        :param detail_type: The detail_type of this SimulationSummary.  # noqa: E501
        :type detail_type: str
        :param identifier: The identifier of this SimulationSummary.  # noqa: E501
        :type identifier: int
        :param description: The description of this SimulationSummary.  # noqa: E501
        :type description: str
        :param created: The created of this SimulationSummary.  # noqa: E501
        :type created: datetime
        :param result: The result of this SimulationSummary.  # noqa: E501
        :type result: int
        :param environment_name: The environment_name of this SimulationSummary.  # noqa: E501
        :type environment_name: str
        :param queued_task_identifier: The queued_task_identifier of this SimulationSummary.  # noqa: E501
        :type queued_task_identifier: str
        :param queued_task_state: The queued_task_state of this SimulationSummary.  # noqa: E501
        :type queued_task_state: int
        """
        self.swagger_types = {
            'detail_type': str,
            'identifier': int,
            'description': str,
            'created': datetime,
            'result': int,
            'environment_name': str,
            'queued_task_identifier': str,
            'queued_task_state': int
        }

        self.attribute_map = {
            'detail_type': 'detail_type',
            'identifier': 'identifier',
            'description': 'description',
            'created': 'created',
            'result': 'result',
            'environment_name': 'environment_name',
            'queued_task_identifier': 'queued_task_identifier',
            'queued_task_state': 'queued_task_state'
        }

        self._detail_type = detail_type
        self._identifier = identifier
        self._description = description
        self._created = created
        self._result = result
        self._environment_name = environment_name
        self._queued_task_identifier = queued_task_identifier
        self._queued_task_state = queued_task_state

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

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

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


        :return: The detail_type of this SimulationSummary.
        :rtype: str
        """
        return self._detail_type

    @detail_type.setter
    def detail_type(self, detail_type: str):
        """Sets the detail_type of this SimulationSummary.


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

        self._detail_type = detail_type

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


        :return: The identifier of this SimulationSummary.
        :rtype: int
        """
        return self._identifier

    @identifier.setter
    def identifier(self, identifier: int):
        """Sets the identifier of this SimulationSummary.


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

        self._identifier = identifier

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


        :return: The description of this SimulationSummary.
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description: str):
        """Sets the description of this SimulationSummary.


        :param description: The description of this SimulationSummary.
        :type description: str
        """

        self._description = description

    @property
    def created(self) -> datetime:
        """Gets the created of this SimulationSummary.


        :return: The created of this SimulationSummary.
        :rtype: datetime
        """
        return self._created

    @created.setter
    def created(self, created: datetime):
        """Sets the created of this SimulationSummary.


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

        self._created = created

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

        0 is scheduled, -1 is prep failed, -100 is sim failed, 100 is sim succeeded  # noqa: E501

        :return: The result of this SimulationSummary.
        :rtype: int
        """
        return self._result

    @result.setter
    def result(self, result: int):
        """Sets the result of this SimulationSummary.

        0 is scheduled, -1 is prep failed, -100 is sim failed, 100 is sim succeeded  # noqa: E501

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

        self._result = result

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

        Name of the simulation environment  # noqa: E501

        :return: The environment_name of this SimulationSummary.
        :rtype: str
        """
        return self._environment_name

    @environment_name.setter
    def environment_name(self, environment_name: str):
        """Sets the environment_name of this SimulationSummary.

        Name of the simulation environment  # noqa: E501

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

        self._environment_name = environment_name

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

        Identifier of the task associated to this simulation  # noqa: E501

        :return: The queued_task_identifier of this SimulationSummary.
        :rtype: str
        """
        return self._queued_task_identifier

    @queued_task_identifier.setter
    def queued_task_identifier(self, queued_task_identifier: str):
        """Sets the queued_task_identifier of this SimulationSummary.

        Identifier of the task associated to this simulation  # noqa: E501

        :param queued_task_identifier: The queued_task_identifier of this SimulationSummary.
        :type queued_task_identifier: str
        """

        self._queued_task_identifier = queued_task_identifier

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

        Read only value, taken from associated task  # noqa: E501

        :return: The queued_task_state of this SimulationSummary.
        :rtype: int
        """
        return self._queued_task_state

    @queued_task_state.setter
    def queued_task_state(self, queued_task_state: int):
        """Sets the queued_task_state of this SimulationSummary.

        Read only value, taken from associated task  # noqa: E501

        :param queued_task_state: The queued_task_state of this SimulationSummary.
        :type queued_task_state: int
        """

        self._queued_task_state = queued_task_state
