# coding: utf-8

"""
    Rightfoot Student Loan Repayment

    This API provides student loan repayment. You can find out more about Rightfoot at [docs.rightfoot.com](https://docs.rightfoot.com).   # noqa: E501

    OpenAPI spec version: 1.2.0
    Contact: engineering@rightfoot.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six


class CreatePaymentRequest(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 = {
        'beneficiary_uuid': 'str',
        'payment_amount': 'int',
        'loan_uuid': 'str',
        'funding_source_uuid': 'str'
    }

    attribute_map = {
        'beneficiary_uuid': 'beneficiaryUuid',
        'payment_amount': 'paymentAmount',
        'loan_uuid': 'loanUuid',
        'funding_source_uuid': 'fundingSourceUuid'
    }

    def __init__(self, beneficiary_uuid=None, payment_amount=None, loan_uuid=None, funding_source_uuid=None):  # noqa: E501
        """CreatePaymentRequest - a model defined in Swagger"""  # noqa: E501
        self._beneficiary_uuid = None
        self._payment_amount = None
        self._loan_uuid = None
        self._funding_source_uuid = None
        self.discriminator = None
        if beneficiary_uuid is not None:
            self.beneficiary_uuid = beneficiary_uuid
        if payment_amount is not None:
            self.payment_amount = payment_amount
        if loan_uuid is not None:
            self.loan_uuid = loan_uuid
        if funding_source_uuid is not None:
            self.funding_source_uuid = funding_source_uuid

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

        Unique identifier generated by Rightfoot for beneficiary.  # noqa: E501

        :return: The beneficiary_uuid of this CreatePaymentRequest.  # noqa: E501
        :rtype: str
        """
        return self._beneficiary_uuid

    @beneficiary_uuid.setter
    def beneficiary_uuid(self, beneficiary_uuid):
        """Sets the beneficiary_uuid of this CreatePaymentRequest.

        Unique identifier generated by Rightfoot for beneficiary.  # noqa: E501

        :param beneficiary_uuid: The beneficiary_uuid of this CreatePaymentRequest.  # noqa: E501
        :type: str
        """

        self._beneficiary_uuid = beneficiary_uuid

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

        Amount to pay to beneficiary's student loans, in cents USD.   # noqa: E501

        :return: The payment_amount of this CreatePaymentRequest.  # noqa: E501
        :rtype: int
        """
        return self._payment_amount

    @payment_amount.setter
    def payment_amount(self, payment_amount):
        """Sets the payment_amount of this CreatePaymentRequest.

        Amount to pay to beneficiary's student loans, in cents USD.   # noqa: E501

        :param payment_amount: The payment_amount of this CreatePaymentRequest.  # noqa: E501
        :type: int
        """

        self._payment_amount = payment_amount

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

        UUID of the Loan to make payment against if created generically.   # noqa: E501

        :return: The loan_uuid of this CreatePaymentRequest.  # noqa: E501
        :rtype: str
        """
        return self._loan_uuid

    @loan_uuid.setter
    def loan_uuid(self, loan_uuid):
        """Sets the loan_uuid of this CreatePaymentRequest.

        UUID of the Loan to make payment against if created generically.   # noqa: E501

        :param loan_uuid: The loan_uuid of this CreatePaymentRequest.  # noqa: E501
        :type: str
        """

        self._loan_uuid = loan_uuid

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

        UUID of the FundingSource to make payments from. This replaces any default funding source configured for the API application. If no default application funding source is specified, this new field is required. This is typical for applications, where the end-user (beneficiary) is making payments through their app.   # noqa: E501

        :return: The funding_source_uuid of this CreatePaymentRequest.  # noqa: E501
        :rtype: str
        """
        return self._funding_source_uuid

    @funding_source_uuid.setter
    def funding_source_uuid(self, funding_source_uuid):
        """Sets the funding_source_uuid of this CreatePaymentRequest.

        UUID of the FundingSource to make payments from. This replaces any default funding source configured for the API application. If no default application funding source is specified, this new field is required. This is typical for applications, where the end-user (beneficiary) is making payments through their app.   # noqa: E501

        :param funding_source_uuid: The funding_source_uuid of this CreatePaymentRequest.  # noqa: E501
        :type: str
        """

        self._funding_source_uuid = funding_source_uuid

    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(CreatePaymentRequest, 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, CreatePaymentRequest):
            return False

        return self.__dict__ == other.__dict__

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