# coding: utf-8

"""
    VeeRoute.UD

    VeeRoute.UD API  # noqa: E501

    The version of the OpenAPI document: 2.8.161005
    Contact: support@veeroute.com
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from vrt_ud.configuration import Configuration


class FactsResult(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    openapi_types = {
        'job_done': 'list[FactJobDone]',
        'demand_done': 'list[FactDemandDone]',
        'demand_cancellation': 'list[FactDemandCancellation]',
        'demand_payment': 'list[FactDemandPayment]',
        'demand_resumed': 'list[FactDemandResumed]',
        'event_window_changed': 'list[FactEventWindowChanged]',
        'performer_message': 'list[FactPerformerMessage]',
        'trip_status_notice': 'list[FactTripStatusNotice]',
        'tripaction_comment_changed': 'list[FactTripactionCommentChanged]',
        'work_started': 'list[FactWorkStarted]',
        'trip_progress': 'list[FactTripProgress]',
        'photo': 'list[FactPhoto]'
    }

    attribute_map = {
        'job_done': 'job_done',
        'demand_done': 'demand_done',
        'demand_cancellation': 'demand_cancellation',
        'demand_payment': 'demand_payment',
        'demand_resumed': 'demand_resumed',
        'event_window_changed': 'event_window_changed',
        'performer_message': 'performer_message',
        'trip_status_notice': 'trip_status_notice',
        'tripaction_comment_changed': 'tripaction_comment_changed',
        'work_started': 'work_started',
        'trip_progress': 'trip_progress',
        'photo': 'photo'
    }

    def __init__(self, job_done=None, demand_done=None, demand_cancellation=None, demand_payment=None, demand_resumed=None, event_window_changed=None, performer_message=None, trip_status_notice=None, tripaction_comment_changed=None, work_started=None, trip_progress=None, photo=None, local_vars_configuration=None):  # noqa: E501
        """FactsResult - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration()
        self.local_vars_configuration = local_vars_configuration

        self._job_done = None
        self._demand_done = None
        self._demand_cancellation = None
        self._demand_payment = None
        self._demand_resumed = None
        self._event_window_changed = None
        self._performer_message = None
        self._trip_status_notice = None
        self._tripaction_comment_changed = None
        self._work_started = None
        self._trip_progress = None
        self._photo = None
        self.discriminator = None

        if job_done is not None:
            self.job_done = job_done
        if demand_done is not None:
            self.demand_done = demand_done
        if demand_cancellation is not None:
            self.demand_cancellation = demand_cancellation
        if demand_payment is not None:
            self.demand_payment = demand_payment
        if demand_resumed is not None:
            self.demand_resumed = demand_resumed
        if event_window_changed is not None:
            self.event_window_changed = event_window_changed
        if performer_message is not None:
            self.performer_message = performer_message
        if trip_status_notice is not None:
            self.trip_status_notice = trip_status_notice
        if tripaction_comment_changed is not None:
            self.tripaction_comment_changed = tripaction_comment_changed
        if work_started is not None:
            self.work_started = work_started
        if trip_progress is not None:
            self.trip_progress = trip_progress
        if photo is not None:
            self.photo = photo

    @property
    def job_done(self):
        """Gets the job_done of this FactsResult.  # noqa: E501

        Facts list 'FactJobDone'.  # noqa: E501

        :return: The job_done of this FactsResult.  # noqa: E501
        :rtype: list[FactJobDone]
        """
        return self._job_done

    @job_done.setter
    def job_done(self, job_done):
        """Sets the job_done of this FactsResult.

        Facts list 'FactJobDone'.  # noqa: E501

        :param job_done: The job_done of this FactsResult.  # noqa: E501
        :type: list[FactJobDone]
        """

        self._job_done = job_done

    @property
    def demand_done(self):
        """Gets the demand_done of this FactsResult.  # noqa: E501

        Facts list 'FactDemandDone'.  # noqa: E501

        :return: The demand_done of this FactsResult.  # noqa: E501
        :rtype: list[FactDemandDone]
        """
        return self._demand_done

    @demand_done.setter
    def demand_done(self, demand_done):
        """Sets the demand_done of this FactsResult.

        Facts list 'FactDemandDone'.  # noqa: E501

        :param demand_done: The demand_done of this FactsResult.  # noqa: E501
        :type: list[FactDemandDone]
        """

        self._demand_done = demand_done

    @property
    def demand_cancellation(self):
        """Gets the demand_cancellation of this FactsResult.  # noqa: E501

        Facts list 'FactDemandCancellation'.  # noqa: E501

        :return: The demand_cancellation of this FactsResult.  # noqa: E501
        :rtype: list[FactDemandCancellation]
        """
        return self._demand_cancellation

    @demand_cancellation.setter
    def demand_cancellation(self, demand_cancellation):
        """Sets the demand_cancellation of this FactsResult.

        Facts list 'FactDemandCancellation'.  # noqa: E501

        :param demand_cancellation: The demand_cancellation of this FactsResult.  # noqa: E501
        :type: list[FactDemandCancellation]
        """

        self._demand_cancellation = demand_cancellation

    @property
    def demand_payment(self):
        """Gets the demand_payment of this FactsResult.  # noqa: E501

        Facts list 'FactDemandPayment'.  # noqa: E501

        :return: The demand_payment of this FactsResult.  # noqa: E501
        :rtype: list[FactDemandPayment]
        """
        return self._demand_payment

    @demand_payment.setter
    def demand_payment(self, demand_payment):
        """Sets the demand_payment of this FactsResult.

        Facts list 'FactDemandPayment'.  # noqa: E501

        :param demand_payment: The demand_payment of this FactsResult.  # noqa: E501
        :type: list[FactDemandPayment]
        """

        self._demand_payment = demand_payment

    @property
    def demand_resumed(self):
        """Gets the demand_resumed of this FactsResult.  # noqa: E501

        Facts list 'FactDemandResumed'.  # noqa: E501

        :return: The demand_resumed of this FactsResult.  # noqa: E501
        :rtype: list[FactDemandResumed]
        """
        return self._demand_resumed

    @demand_resumed.setter
    def demand_resumed(self, demand_resumed):
        """Sets the demand_resumed of this FactsResult.

        Facts list 'FactDemandResumed'.  # noqa: E501

        :param demand_resumed: The demand_resumed of this FactsResult.  # noqa: E501
        :type: list[FactDemandResumed]
        """

        self._demand_resumed = demand_resumed

    @property
    def event_window_changed(self):
        """Gets the event_window_changed of this FactsResult.  # noqa: E501

        Facts list 'FactEventWindowChanged'.  # noqa: E501

        :return: The event_window_changed of this FactsResult.  # noqa: E501
        :rtype: list[FactEventWindowChanged]
        """
        return self._event_window_changed

    @event_window_changed.setter
    def event_window_changed(self, event_window_changed):
        """Sets the event_window_changed of this FactsResult.

        Facts list 'FactEventWindowChanged'.  # noqa: E501

        :param event_window_changed: The event_window_changed of this FactsResult.  # noqa: E501
        :type: list[FactEventWindowChanged]
        """

        self._event_window_changed = event_window_changed

    @property
    def performer_message(self):
        """Gets the performer_message of this FactsResult.  # noqa: E501

        Facts list 'FactPerformerMessage'.  # noqa: E501

        :return: The performer_message of this FactsResult.  # noqa: E501
        :rtype: list[FactPerformerMessage]
        """
        return self._performer_message

    @performer_message.setter
    def performer_message(self, performer_message):
        """Sets the performer_message of this FactsResult.

        Facts list 'FactPerformerMessage'.  # noqa: E501

        :param performer_message: The performer_message of this FactsResult.  # noqa: E501
        :type: list[FactPerformerMessage]
        """

        self._performer_message = performer_message

    @property
    def trip_status_notice(self):
        """Gets the trip_status_notice of this FactsResult.  # noqa: E501

        Facts list 'FactTripStatusNotice'.  # noqa: E501

        :return: The trip_status_notice of this FactsResult.  # noqa: E501
        :rtype: list[FactTripStatusNotice]
        """
        return self._trip_status_notice

    @trip_status_notice.setter
    def trip_status_notice(self, trip_status_notice):
        """Sets the trip_status_notice of this FactsResult.

        Facts list 'FactTripStatusNotice'.  # noqa: E501

        :param trip_status_notice: The trip_status_notice of this FactsResult.  # noqa: E501
        :type: list[FactTripStatusNotice]
        """

        self._trip_status_notice = trip_status_notice

    @property
    def tripaction_comment_changed(self):
        """Gets the tripaction_comment_changed of this FactsResult.  # noqa: E501

        Facts list 'FactTripactionCommentChanged'.  # noqa: E501

        :return: The tripaction_comment_changed of this FactsResult.  # noqa: E501
        :rtype: list[FactTripactionCommentChanged]
        """
        return self._tripaction_comment_changed

    @tripaction_comment_changed.setter
    def tripaction_comment_changed(self, tripaction_comment_changed):
        """Sets the tripaction_comment_changed of this FactsResult.

        Facts list 'FactTripactionCommentChanged'.  # noqa: E501

        :param tripaction_comment_changed: The tripaction_comment_changed of this FactsResult.  # noqa: E501
        :type: list[FactTripactionCommentChanged]
        """

        self._tripaction_comment_changed = tripaction_comment_changed

    @property
    def work_started(self):
        """Gets the work_started of this FactsResult.  # noqa: E501

        Facts list 'FactWorkStarted'.  # noqa: E501

        :return: The work_started of this FactsResult.  # noqa: E501
        :rtype: list[FactWorkStarted]
        """
        return self._work_started

    @work_started.setter
    def work_started(self, work_started):
        """Sets the work_started of this FactsResult.

        Facts list 'FactWorkStarted'.  # noqa: E501

        :param work_started: The work_started of this FactsResult.  # noqa: E501
        :type: list[FactWorkStarted]
        """

        self._work_started = work_started

    @property
    def trip_progress(self):
        """Gets the trip_progress of this FactsResult.  # noqa: E501

        Facts list 'FactTripProgress'.  # noqa: E501

        :return: The trip_progress of this FactsResult.  # noqa: E501
        :rtype: list[FactTripProgress]
        """
        return self._trip_progress

    @trip_progress.setter
    def trip_progress(self, trip_progress):
        """Sets the trip_progress of this FactsResult.

        Facts list 'FactTripProgress'.  # noqa: E501

        :param trip_progress: The trip_progress of this FactsResult.  # noqa: E501
        :type: list[FactTripProgress]
        """

        self._trip_progress = trip_progress

    @property
    def photo(self):
        """Gets the photo of this FactsResult.  # noqa: E501

        Facts list 'FactPhoto'.  # noqa: E501

        :return: The photo of this FactsResult.  # noqa: E501
        :rtype: list[FactPhoto]
        """
        return self._photo

    @photo.setter
    def photo(self, photo):
        """Sets the photo of this FactsResult.

        Facts list 'FactPhoto'.  # noqa: E501

        :param photo: The photo of this FactsResult.  # noqa: E501
        :type: list[FactPhoto]
        """

        self._photo = photo

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.openapi_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, FactsResult):
            return False

        return self.to_dict() == other.to_dict()

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        if not isinstance(other, FactsResult):
            return True

        return self.to_dict() != other.to_dict()
