# coding: utf-8

"""
    Trip Planner

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

    OpenAPI spec version: 1.0
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six


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

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_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.
    """
    swagger_types = {
        'rider_category_name': 'str',
        'price_station_access_fee': 'str',
        'price_total_fare': 'str',
        'evaluation_ticket': 'str'
    }

    attribute_map = {
        'rider_category_name': 'riderCategoryName',
        'price_station_access_fee': 'priceStationAccessFee',
        'price_total_fare': 'priceTotalFare',
        'evaluation_ticket': 'evaluationTicket'
    }

    def __init__(self, rider_category_name=None, price_station_access_fee=None, price_total_fare=None, evaluation_ticket=None):  # noqa: E501
        """TripRequestResponseJourneyFareTicketProperties - a model defined in Swagger"""  # noqa: E501

        self._rider_category_name = None
        self._price_station_access_fee = None
        self._price_total_fare = None
        self._evaluation_ticket = None
        self.discriminator = None

        if rider_category_name is not None:
            self.rider_category_name = rider_category_name
        if price_station_access_fee is not None:
            self.price_station_access_fee = price_station_access_fee
        if price_total_fare is not None:
            self.price_total_fare = price_total_fare
        if evaluation_ticket is not None:
            self.evaluation_ticket = evaluation_ticket

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

        A human-readable title for this ticket type.  # noqa: E501

        :return: The rider_category_name of this TripRequestResponseJourneyFareTicketProperties.  # noqa: E501
        :rtype: str
        """
        return self._rider_category_name

    @rider_category_name.setter
    def rider_category_name(self, rider_category_name):
        """Sets the rider_category_name of this TripRequestResponseJourneyFareTicketProperties.

        A human-readable title for this ticket type.  # noqa: E501

        :param rider_category_name: The rider_category_name of this TripRequestResponseJourneyFareTicketProperties.  # noqa: E501
        :type: str
        """

        self._rider_category_name = rider_category_name

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

        If part of the fare includes a station access fee (for example, when travelling to the airport), this field contains how much of the fare is made up of the station access fee. Note that this value is a string in the format of dollars and cents, in the currency described in `currency`. An example value is `3.50`.   # noqa: E501

        :return: The price_station_access_fee of this TripRequestResponseJourneyFareTicketProperties.  # noqa: E501
        :rtype: str
        """
        return self._price_station_access_fee

    @price_station_access_fee.setter
    def price_station_access_fee(self, price_station_access_fee):
        """Sets the price_station_access_fee of this TripRequestResponseJourneyFareTicketProperties.

        If part of the fare includes a station access fee (for example, when travelling to the airport), this field contains how much of the fare is made up of the station access fee. Note that this value is a string in the format of dollars and cents, in the currency described in `currency`. An example value is `3.50`.   # noqa: E501

        :param price_station_access_fee: The price_station_access_fee of this TripRequestResponseJourneyFareTicketProperties.  # noqa: E501
        :type: str
        """

        self._price_station_access_fee = price_station_access_fee

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

        This is the total cost of the fare, which combines the station access fee (if present) with the tariff for the particular trip. Note that this value is a string in the format of dollars and cents, in the currency described in `currency`. An example value is `3.50`.    # noqa: E501

        :return: The price_total_fare of this TripRequestResponseJourneyFareTicketProperties.  # noqa: E501
        :rtype: str
        """
        return self._price_total_fare

    @price_total_fare.setter
    def price_total_fare(self, price_total_fare):
        """Sets the price_total_fare of this TripRequestResponseJourneyFareTicketProperties.

        This is the total cost of the fare, which combines the station access fee (if present) with the tariff for the particular trip. Note that this value is a string in the format of dollars and cents, in the currency described in `currency`. An example value is `3.50`.    # noqa: E501

        :param price_total_fare: The price_total_fare of this TripRequestResponseJourneyFareTicketProperties.  # noqa: E501
        :type: str
        """

        self._price_total_fare = price_total_fare

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

        If this value is set, then this particular ticket entry contains the total journey information for the given category of traveller. For example, for an `ADULT` traveller, there may be a ticket entry for each mode of travel, as well as a single entry for the entire trip which accumulates the various leg costs together.  Depending on the modes of travel, it's possible that the API is unable to determine the precise cost. For example, if a private ferry operator is included in a trip plan, then their cost is likely not included.  The possible values for this field are:  * `nswFareEnabled`: The entire cost of the trip was able to be calculated. * `nswFarePartiallyEnabled`: The cost of some - but not all - of the legs could be calculated. * `nswFareNotEnabled`: Opal is not available for this journey. * `nswFareNotAvailable`: The API was unable to determine any of the cost of the journey.   # noqa: E501

        :return: The evaluation_ticket of this TripRequestResponseJourneyFareTicketProperties.  # noqa: E501
        :rtype: str
        """
        return self._evaluation_ticket

    @evaluation_ticket.setter
    def evaluation_ticket(self, evaluation_ticket):
        """Sets the evaluation_ticket of this TripRequestResponseJourneyFareTicketProperties.

        If this value is set, then this particular ticket entry contains the total journey information for the given category of traveller. For example, for an `ADULT` traveller, there may be a ticket entry for each mode of travel, as well as a single entry for the entire trip which accumulates the various leg costs together.  Depending on the modes of travel, it's possible that the API is unable to determine the precise cost. For example, if a private ferry operator is included in a trip plan, then their cost is likely not included.  The possible values for this field are:  * `nswFareEnabled`: The entire cost of the trip was able to be calculated. * `nswFarePartiallyEnabled`: The cost of some - but not all - of the legs could be calculated. * `nswFareNotEnabled`: Opal is not available for this journey. * `nswFareNotAvailable`: The API was unable to determine any of the cost of the journey.   # noqa: E501

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

        self._evaluation_ticket = evaluation_ticket

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

        for attr, _ in six.iteritems(self.swagger_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
        if issubclass(TripRequestResponseJourneyFareTicketProperties, dict):
            for key, value in self.items():
                result[key] = 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, TripRequestResponseJourneyFareTicketProperties):
            return False

        return self.__dict__ == other.__dict__

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