# coding: utf-8

"""
    Getir-Locals Integration Swagger Documentation

    This documentation is created by Getir Developers for Getir-Locals Integration.For this integration, you need to take CLIENT NAME and CLIENT SECRET keys from Getir-dev team and use these keys for authentication. You also need to use access token provided after successful login to be able to use all other endpoints  You can view information about the active order through /orders/unapproved endpoints. The status of the order is managed via verify, prepare, handover and cancel endpoints. Details on order management are as follows:  For orders to be made by the Getir courier, the flow is as follows:  Supplier confirms order --verify<br />Supplier prepares order --prepare (1-2 minutes must pass before delivery)<br />Supplier hands over the order to Getir courier --handover<br />For Getir delivery, transactions are made by the Getir courier after handover.  A valid reason will be requested from the supplier to cancel an order. Valid reasons may vary depending on the instant status of the order. For this reason, before canceling an order, you have to get instant valid order cancellation reasons from /orders/{orderId}/cancel-options endpoint.   # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class ApiResponseActiveOrder(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 = {
        'order_id': 'str',
        'order_number': 'float',
        'shop_id': 'str',
        'chain_id': 'str',
        'status': 'float',
        'checkout_date': 'str',
        'client_note': 'str',
        'confirmation_id': 'str',
        'total_price': 'float',
        'shop_min_basket_amount': 'int',
        'getir_min_basket_amount': 'int',
        'client_batched_note': 'str',
        'max_possible_amount_merchant_can_charge': 'float',
        'min_possible_amount_merchant_can_charge': 'float',
        'do_not_knock': 'bool',
        'drop_off_at_door': 'bool',
        'is_eco_friendly': 'bool',
        'delivery_type': 'int',
        'payment_method': 'int',
        'payment_method_text': 'PaymentMethodTextResponse',
        'customer': 'CustomerResponse',
        'invoice_address': 'InvoiceAddressResponse',
        'products': 'list[ProductResponse]'
    }

    attribute_map = {
        'order_id': 'orderId',
        'order_number': 'orderNumber',
        'shop_id': 'shopId',
        'chain_id': 'chainId',
        'status': 'status',
        'checkout_date': 'checkoutDate',
        'client_note': 'clientNote',
        'confirmation_id': 'confirmationId',
        'total_price': 'totalPrice',
        'shop_min_basket_amount': 'shopMinBasketAmount',
        'getir_min_basket_amount': 'getirMinBasketAmount',
        'client_batched_note': 'clientBatchedNote',
        'max_possible_amount_merchant_can_charge': 'maxPossibleAmountMerchantCanCharge',
        'min_possible_amount_merchant_can_charge': 'minPossibleAmountMerchantCanCharge',
        'do_not_knock': 'doNotKnock',
        'drop_off_at_door': 'dropOffAtDoor',
        'is_eco_friendly': 'isEcoFriendly',
        'delivery_type': 'deliveryType',
        'payment_method': 'paymentMethod',
        'payment_method_text': 'paymentMethodText',
        'customer': 'customer',
        'invoice_address': 'invoiceAddress',
        'products': 'products'
    }

    def __init__(self, order_id=None, order_number=None, shop_id=None, chain_id=None, status=None, checkout_date=None, client_note=None, confirmation_id=None, total_price=None, shop_min_basket_amount=None, getir_min_basket_amount=None, client_batched_note=None, max_possible_amount_merchant_can_charge=None, min_possible_amount_merchant_can_charge=None, do_not_knock=None, drop_off_at_door=None, is_eco_friendly=None, delivery_type=None, payment_method=None, payment_method_text=None, customer=None, invoice_address=None, products=None):  # noqa: E501
        """ApiResponseActiveOrder - a model defined in Swagger"""  # noqa: E501
        self._order_id = None
        self._order_number = None
        self._shop_id = None
        self._chain_id = None
        self._status = None
        self._checkout_date = None
        self._client_note = None
        self._confirmation_id = None
        self._total_price = None
        self._shop_min_basket_amount = None
        self._getir_min_basket_amount = None
        self._client_batched_note = None
        self._max_possible_amount_merchant_can_charge = None
        self._min_possible_amount_merchant_can_charge = None
        self._do_not_knock = None
        self._drop_off_at_door = None
        self._is_eco_friendly = None
        self._delivery_type = None
        self._payment_method = None
        self._payment_method_text = None
        self._customer = None
        self._invoice_address = None
        self._products = None
        self.discriminator = None
        if order_id is not None:
            self.order_id = order_id
        if order_number is not None:
            self.order_number = order_number
        if shop_id is not None:
            self.shop_id = shop_id
        if chain_id is not None:
            self.chain_id = chain_id
        if status is not None:
            self.status = status
        if checkout_date is not None:
            self.checkout_date = checkout_date
        if client_note is not None:
            self.client_note = client_note
        if confirmation_id is not None:
            self.confirmation_id = confirmation_id
        if total_price is not None:
            self.total_price = total_price
        if shop_min_basket_amount is not None:
            self.shop_min_basket_amount = shop_min_basket_amount
        if getir_min_basket_amount is not None:
            self.getir_min_basket_amount = getir_min_basket_amount
        if client_batched_note is not None:
            self.client_batched_note = client_batched_note
        if max_possible_amount_merchant_can_charge is not None:
            self.max_possible_amount_merchant_can_charge = max_possible_amount_merchant_can_charge
        if min_possible_amount_merchant_can_charge is not None:
            self.min_possible_amount_merchant_can_charge = min_possible_amount_merchant_can_charge
        if do_not_knock is not None:
            self.do_not_knock = do_not_knock
        if drop_off_at_door is not None:
            self.drop_off_at_door = drop_off_at_door
        if is_eco_friendly is not None:
            self.is_eco_friendly = is_eco_friendly
        if delivery_type is not None:
            self.delivery_type = delivery_type
        if payment_method is not None:
            self.payment_method = payment_method
        if payment_method_text is not None:
            self.payment_method_text = payment_method_text
        if customer is not None:
            self.customer = customer
        if invoice_address is not None:
            self.invoice_address = invoice_address
        if products is not None:
            self.products = products

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


        :return: The order_id of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: str
        """
        return self._order_id

    @order_id.setter
    def order_id(self, order_id):
        """Sets the order_id of this ApiResponseActiveOrder.


        :param order_id: The order_id of this ApiResponseActiveOrder.  # noqa: E501
        :type: str
        """

        self._order_id = order_id

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


        :return: The order_number of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: float
        """
        return self._order_number

    @order_number.setter
    def order_number(self, order_number):
        """Sets the order_number of this ApiResponseActiveOrder.


        :param order_number: The order_number of this ApiResponseActiveOrder.  # noqa: E501
        :type: float
        """

        self._order_number = order_number

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


        :return: The shop_id of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: str
        """
        return self._shop_id

    @shop_id.setter
    def shop_id(self, shop_id):
        """Sets the shop_id of this ApiResponseActiveOrder.


        :param shop_id: The shop_id of this ApiResponseActiveOrder.  # noqa: E501
        :type: str
        """

        self._shop_id = shop_id

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


        :return: The chain_id of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: str
        """
        return self._chain_id

    @chain_id.setter
    def chain_id(self, chain_id):
        """Sets the chain_id of this ApiResponseActiveOrder.


        :param chain_id: The chain_id of this ApiResponseActiveOrder.  # noqa: E501
        :type: str
        """

        self._chain_id = chain_id

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


        :return: The status of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: float
        """
        return self._status

    @status.setter
    def status(self, status):
        """Sets the status of this ApiResponseActiveOrder.


        :param status: The status of this ApiResponseActiveOrder.  # noqa: E501
        :type: float
        """

        self._status = status

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


        :return: The checkout_date of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: str
        """
        return self._checkout_date

    @checkout_date.setter
    def checkout_date(self, checkout_date):
        """Sets the checkout_date of this ApiResponseActiveOrder.


        :param checkout_date: The checkout_date of this ApiResponseActiveOrder.  # noqa: E501
        :type: str
        """

        self._checkout_date = checkout_date

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


        :return: The client_note of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: str
        """
        return self._client_note

    @client_note.setter
    def client_note(self, client_note):
        """Sets the client_note of this ApiResponseActiveOrder.


        :param client_note: The client_note of this ApiResponseActiveOrder.  # noqa: E501
        :type: str
        """

        self._client_note = client_note

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


        :return: The confirmation_id of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: str
        """
        return self._confirmation_id

    @confirmation_id.setter
    def confirmation_id(self, confirmation_id):
        """Sets the confirmation_id of this ApiResponseActiveOrder.


        :param confirmation_id: The confirmation_id of this ApiResponseActiveOrder.  # noqa: E501
        :type: str
        """

        self._confirmation_id = confirmation_id

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


        :return: The total_price of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: float
        """
        return self._total_price

    @total_price.setter
    def total_price(self, total_price):
        """Sets the total_price of this ApiResponseActiveOrder.


        :param total_price: The total_price of this ApiResponseActiveOrder.  # noqa: E501
        :type: float
        """

        self._total_price = total_price

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


        :return: The shop_min_basket_amount of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: int
        """
        return self._shop_min_basket_amount

    @shop_min_basket_amount.setter
    def shop_min_basket_amount(self, shop_min_basket_amount):
        """Sets the shop_min_basket_amount of this ApiResponseActiveOrder.


        :param shop_min_basket_amount: The shop_min_basket_amount of this ApiResponseActiveOrder.  # noqa: E501
        :type: int
        """

        self._shop_min_basket_amount = shop_min_basket_amount

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


        :return: The getir_min_basket_amount of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: int
        """
        return self._getir_min_basket_amount

    @getir_min_basket_amount.setter
    def getir_min_basket_amount(self, getir_min_basket_amount):
        """Sets the getir_min_basket_amount of this ApiResponseActiveOrder.


        :param getir_min_basket_amount: The getir_min_basket_amount of this ApiResponseActiveOrder.  # noqa: E501
        :type: int
        """

        self._getir_min_basket_amount = getir_min_basket_amount

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


        :return: The client_batched_note of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: str
        """
        return self._client_batched_note

    @client_batched_note.setter
    def client_batched_note(self, client_batched_note):
        """Sets the client_batched_note of this ApiResponseActiveOrder.


        :param client_batched_note: The client_batched_note of this ApiResponseActiveOrder.  # noqa: E501
        :type: str
        """

        self._client_batched_note = client_batched_note

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


        :return: The max_possible_amount_merchant_can_charge of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: float
        """
        return self._max_possible_amount_merchant_can_charge

    @max_possible_amount_merchant_can_charge.setter
    def max_possible_amount_merchant_can_charge(self, max_possible_amount_merchant_can_charge):
        """Sets the max_possible_amount_merchant_can_charge of this ApiResponseActiveOrder.


        :param max_possible_amount_merchant_can_charge: The max_possible_amount_merchant_can_charge of this ApiResponseActiveOrder.  # noqa: E501
        :type: float
        """

        self._max_possible_amount_merchant_can_charge = max_possible_amount_merchant_can_charge

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


        :return: The min_possible_amount_merchant_can_charge of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: float
        """
        return self._min_possible_amount_merchant_can_charge

    @min_possible_amount_merchant_can_charge.setter
    def min_possible_amount_merchant_can_charge(self, min_possible_amount_merchant_can_charge):
        """Sets the min_possible_amount_merchant_can_charge of this ApiResponseActiveOrder.


        :param min_possible_amount_merchant_can_charge: The min_possible_amount_merchant_can_charge of this ApiResponseActiveOrder.  # noqa: E501
        :type: float
        """

        self._min_possible_amount_merchant_can_charge = min_possible_amount_merchant_can_charge

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


        :return: The do_not_knock of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: bool
        """
        return self._do_not_knock

    @do_not_knock.setter
    def do_not_knock(self, do_not_knock):
        """Sets the do_not_knock of this ApiResponseActiveOrder.


        :param do_not_knock: The do_not_knock of this ApiResponseActiveOrder.  # noqa: E501
        :type: bool
        """

        self._do_not_knock = do_not_knock

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


        :return: The drop_off_at_door of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: bool
        """
        return self._drop_off_at_door

    @drop_off_at_door.setter
    def drop_off_at_door(self, drop_off_at_door):
        """Sets the drop_off_at_door of this ApiResponseActiveOrder.


        :param drop_off_at_door: The drop_off_at_door of this ApiResponseActiveOrder.  # noqa: E501
        :type: bool
        """

        self._drop_off_at_door = drop_off_at_door

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


        :return: The is_eco_friendly of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: bool
        """
        return self._is_eco_friendly

    @is_eco_friendly.setter
    def is_eco_friendly(self, is_eco_friendly):
        """Sets the is_eco_friendly of this ApiResponseActiveOrder.


        :param is_eco_friendly: The is_eco_friendly of this ApiResponseActiveOrder.  # noqa: E501
        :type: bool
        """

        self._is_eco_friendly = is_eco_friendly

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


        :return: The delivery_type of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: int
        """
        return self._delivery_type

    @delivery_type.setter
    def delivery_type(self, delivery_type):
        """Sets the delivery_type of this ApiResponseActiveOrder.


        :param delivery_type: The delivery_type of this ApiResponseActiveOrder.  # noqa: E501
        :type: int
        """

        self._delivery_type = delivery_type

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


        :return: The payment_method of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: int
        """
        return self._payment_method

    @payment_method.setter
    def payment_method(self, payment_method):
        """Sets the payment_method of this ApiResponseActiveOrder.


        :param payment_method: The payment_method of this ApiResponseActiveOrder.  # noqa: E501
        :type: int
        """

        self._payment_method = payment_method

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


        :return: The payment_method_text of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: PaymentMethodTextResponse
        """
        return self._payment_method_text

    @payment_method_text.setter
    def payment_method_text(self, payment_method_text):
        """Sets the payment_method_text of this ApiResponseActiveOrder.


        :param payment_method_text: The payment_method_text of this ApiResponseActiveOrder.  # noqa: E501
        :type: PaymentMethodTextResponse
        """

        self._payment_method_text = payment_method_text

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


        :return: The customer of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: CustomerResponse
        """
        return self._customer

    @customer.setter
    def customer(self, customer):
        """Sets the customer of this ApiResponseActiveOrder.


        :param customer: The customer of this ApiResponseActiveOrder.  # noqa: E501
        :type: CustomerResponse
        """

        self._customer = customer

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


        :return: The invoice_address of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: InvoiceAddressResponse
        """
        return self._invoice_address

    @invoice_address.setter
    def invoice_address(self, invoice_address):
        """Sets the invoice_address of this ApiResponseActiveOrder.


        :param invoice_address: The invoice_address of this ApiResponseActiveOrder.  # noqa: E501
        :type: InvoiceAddressResponse
        """

        self._invoice_address = invoice_address

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


        :return: The products of this ApiResponseActiveOrder.  # noqa: E501
        :rtype: list[ProductResponse]
        """
        return self._products

    @products.setter
    def products(self, products):
        """Sets the products of this ApiResponseActiveOrder.


        :param products: The products of this ApiResponseActiveOrder.  # noqa: E501
        :type: list[ProductResponse]
        """

        self._products = products

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

        return self.__dict__ == other.__dict__

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