# coding: utf-8

"""
    Knetik Platform API Documentation latest 

    This is the spec for the Knetik API.  Use this in conjunction with the documentation found at https://knetikcloud.com.

    OpenAPI spec version: latest 
    Contact: support@knetik.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


from pprint import pformat
from six import iteritems
import re


class VendorResource(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 = {
        'active': 'bool',
        'additional_properties': 'dict(str, ModelProperty)',
        'create_date': 'int',
        'description': 'str',
        'id': 'int',
        'image_url': 'str',
        'manual_approval': 'bool',
        'name': 'str',
        'primary_contact_email': 'str',
        'primary_contact_name': 'str',
        'primary_contact_phone': 'str',
        'sales_email': 'str',
        'support_email': 'str',
        'template': 'str',
        'update_date': 'int',
        'url': 'str'
    }

    attribute_map = {
        'active': 'active',
        'additional_properties': 'additional_properties',
        'create_date': 'create_date',
        'description': 'description',
        'id': 'id',
        'image_url': 'image_url',
        'manual_approval': 'manual_approval',
        'name': 'name',
        'primary_contact_email': 'primary_contact_email',
        'primary_contact_name': 'primary_contact_name',
        'primary_contact_phone': 'primary_contact_phone',
        'sales_email': 'sales_email',
        'support_email': 'support_email',
        'template': 'template',
        'update_date': 'update_date',
        'url': 'url'
    }

    def __init__(self, active=None, additional_properties=None, create_date=None, description=None, id=None, image_url=None, manual_approval=None, name=None, primary_contact_email=None, primary_contact_name=None, primary_contact_phone=None, sales_email=None, support_email=None, template=None, update_date=None, url=None):
        """
        VendorResource - a model defined in Swagger
        """

        self._active = None
        self._additional_properties = None
        self._create_date = None
        self._description = None
        self._id = None
        self._image_url = None
        self._manual_approval = None
        self._name = None
        self._primary_contact_email = None
        self._primary_contact_name = None
        self._primary_contact_phone = None
        self._sales_email = None
        self._support_email = None
        self._template = None
        self._update_date = None
        self._url = None
        self.discriminator = None

        if active is not None:
          self.active = active
        if additional_properties is not None:
          self.additional_properties = additional_properties
        if create_date is not None:
          self.create_date = create_date
        if description is not None:
          self.description = description
        if id is not None:
          self.id = id
        if image_url is not None:
          self.image_url = image_url
        if manual_approval is not None:
          self.manual_approval = manual_approval
        self.name = name
        if primary_contact_email is not None:
          self.primary_contact_email = primary_contact_email
        if primary_contact_name is not None:
          self.primary_contact_name = primary_contact_name
        if primary_contact_phone is not None:
          self.primary_contact_phone = primary_contact_phone
        if sales_email is not None:
          self.sales_email = sales_email
        if support_email is not None:
          self.support_email = support_email
        if template is not None:
          self.template = template
        if update_date is not None:
          self.update_date = update_date
        if url is not None:
          self.url = url

    @property
    def active(self):
        """
        Gets the active of this VendorResource.
        Whether the vendor is active.  Default = true

        :return: The active of this VendorResource.
        :rtype: bool
        """
        return self._active

    @active.setter
    def active(self, active):
        """
        Sets the active of this VendorResource.
        Whether the vendor is active.  Default = true

        :param active: The active of this VendorResource.
        :type: bool
        """

        self._active = active

    @property
    def additional_properties(self):
        """
        Gets the additional_properties of this VendorResource.
        A map of additional properties, keyed on the property name (private). Must match the names and types defined in the template for this user type, or be an extra not from the template

        :return: The additional_properties of this VendorResource.
        :rtype: dict(str, ModelProperty)
        """
        return self._additional_properties

    @additional_properties.setter
    def additional_properties(self, additional_properties):
        """
        Sets the additional_properties of this VendorResource.
        A map of additional properties, keyed on the property name (private). Must match the names and types defined in the template for this user type, or be an extra not from the template

        :param additional_properties: The additional_properties of this VendorResource.
        :type: dict(str, ModelProperty)
        """

        self._additional_properties = additional_properties

    @property
    def create_date(self):
        """
        Gets the create_date of this VendorResource.
        The date the vendor was added. Unix timestamp in seconds

        :return: The create_date of this VendorResource.
        :rtype: int
        """
        return self._create_date

    @create_date.setter
    def create_date(self, create_date):
        """
        Sets the create_date of this VendorResource.
        The date the vendor was added. Unix timestamp in seconds

        :param create_date: The create_date of this VendorResource.
        :type: int
        """

        self._create_date = create_date

    @property
    def description(self):
        """
        Gets the description of this VendorResource.
        A description of the vendor

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

    @description.setter
    def description(self, description):
        """
        Sets the description of this VendorResource.
        A description of the vendor

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

        self._description = description

    @property
    def id(self):
        """
        Gets the id of this VendorResource.
        The id of the vendor

        :return: The id of this VendorResource.
        :rtype: int
        """
        return self._id

    @id.setter
    def id(self, id):
        """
        Sets the id of this VendorResource.
        The id of the vendor

        :param id: The id of this VendorResource.
        :type: int
        """

        self._id = id

    @property
    def image_url(self):
        """
        Gets the image_url of this VendorResource.
        The url of an image for the vendor

        :return: The image_url of this VendorResource.
        :rtype: str
        """
        return self._image_url

    @image_url.setter
    def image_url(self, image_url):
        """
        Sets the image_url of this VendorResource.
        The url of an image for the vendor

        :param image_url: The image_url of this VendorResource.
        :type: str
        """

        self._image_url = image_url

    @property
    def manual_approval(self):
        """
        Gets the manual_approval of this VendorResource.
        Whether the vendor needs to manually approve invoices before they are paid.  A separate checkout flow is required in this case.  Default: false

        :return: The manual_approval of this VendorResource.
        :rtype: bool
        """
        return self._manual_approval

    @manual_approval.setter
    def manual_approval(self, manual_approval):
        """
        Sets the manual_approval of this VendorResource.
        Whether the vendor needs to manually approve invoices before they are paid.  A separate checkout flow is required in this case.  Default: false

        :param manual_approval: The manual_approval of this VendorResource.
        :type: bool
        """

        self._manual_approval = manual_approval

    @property
    def name(self):
        """
        Gets the name of this VendorResource.
        The name of the vendor

        :return: The name of this VendorResource.
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name):
        """
        Sets the name of this VendorResource.
        The name of the vendor

        :param name: The name of this VendorResource.
        :type: str
        """
        if name is None:
            raise ValueError("Invalid value for `name`, must not be `None`")

        self._name = name

    @property
    def primary_contact_email(self):
        """
        Gets the primary_contact_email of this VendorResource.
        The primary email address for the vendor

        :return: The primary_contact_email of this VendorResource.
        :rtype: str
        """
        return self._primary_contact_email

    @primary_contact_email.setter
    def primary_contact_email(self, primary_contact_email):
        """
        Sets the primary_contact_email of this VendorResource.
        The primary email address for the vendor

        :param primary_contact_email: The primary_contact_email of this VendorResource.
        :type: str
        """

        self._primary_contact_email = primary_contact_email

    @property
    def primary_contact_name(self):
        """
        Gets the primary_contact_name of this VendorResource.
        The name of the primary contact for the vendor

        :return: The primary_contact_name of this VendorResource.
        :rtype: str
        """
        return self._primary_contact_name

    @primary_contact_name.setter
    def primary_contact_name(self, primary_contact_name):
        """
        Sets the primary_contact_name of this VendorResource.
        The name of the primary contact for the vendor

        :param primary_contact_name: The primary_contact_name of this VendorResource.
        :type: str
        """

        self._primary_contact_name = primary_contact_name

    @property
    def primary_contact_phone(self):
        """
        Gets the primary_contact_phone of this VendorResource.
        The primary phone number for the vendor

        :return: The primary_contact_phone of this VendorResource.
        :rtype: str
        """
        return self._primary_contact_phone

    @primary_contact_phone.setter
    def primary_contact_phone(self, primary_contact_phone):
        """
        Sets the primary_contact_phone of this VendorResource.
        The primary phone number for the vendor

        :param primary_contact_phone: The primary_contact_phone of this VendorResource.
        :type: str
        """

        self._primary_contact_phone = primary_contact_phone

    @property
    def sales_email(self):
        """
        Gets the sales_email of this VendorResource.
        The email address for sale inquiries for the vendor

        :return: The sales_email of this VendorResource.
        :rtype: str
        """
        return self._sales_email

    @sales_email.setter
    def sales_email(self, sales_email):
        """
        Sets the sales_email of this VendorResource.
        The email address for sale inquiries for the vendor

        :param sales_email: The sales_email of this VendorResource.
        :type: str
        """

        self._sales_email = sales_email

    @property
    def support_email(self):
        """
        Gets the support_email of this VendorResource.
        The email address for support inquiries for the vendor

        :return: The support_email of this VendorResource.
        :rtype: str
        """
        return self._support_email

    @support_email.setter
    def support_email(self, support_email):
        """
        Sets the support_email of this VendorResource.
        The email address for support inquiries for the vendor

        :param support_email: The support_email of this VendorResource.
        :type: str
        """

        self._support_email = support_email

    @property
    def template(self):
        """
        Gets the template of this VendorResource.
        A user template this user is validated against (private). May be null and no validation of properties will be done

        :return: The template of this VendorResource.
        :rtype: str
        """
        return self._template

    @template.setter
    def template(self, template):
        """
        Sets the template of this VendorResource.
        A user template this user is validated against (private). May be null and no validation of properties will be done

        :param template: The template of this VendorResource.
        :type: str
        """

        self._template = template

    @property
    def update_date(self):
        """
        Gets the update_date of this VendorResource.
        The date the vendor was last updated. Unix timestamp in seconds

        :return: The update_date of this VendorResource.
        :rtype: int
        """
        return self._update_date

    @update_date.setter
    def update_date(self, update_date):
        """
        Sets the update_date of this VendorResource.
        The date the vendor was last updated. Unix timestamp in seconds

        :param update_date: The update_date of this VendorResource.
        :type: int
        """

        self._update_date = update_date

    @property
    def url(self):
        """
        Gets the url of this VendorResource.
        The url for the vendor's site

        :return: The url of this VendorResource.
        :rtype: str
        """
        return self._url

    @url.setter
    def url(self, url):
        """
        Sets the url of this VendorResource.
        The url for the vendor's site

        :param url: The url of this VendorResource.
        :type: str
        """

        self._url = url

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

        for attr, _ in 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

        return result

    def to_str(self):
        """
        Returns the string representation of the model
        """
        return 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, VendorResource):
            return False

        return self.__dict__ == other.__dict__

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