# coding: utf-8

"""
    projects-api

    These APIs allows you to create workflow statuses, which are then assigned to workflows. These workflows, containing multiple statuses, are subsequently linked to projects. Additionally, candidates are associated with projects, defining the path they are meant to follow within the established workflows.  # noqa: E501

    OpenAPI spec version: 1.0.0
    
    Generated by: phenom
"""

import pprint
import re  # noqa: F401

import six

class CreateProjectRequestProjectAttachmentList(object):
    """
    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 = {
        'file_name': 'str',
        'description': 'str',
        'file_url': 'str',
        'uploaded_by_email': 'str',
        'uploaded_by_name': 'str',
        'size': 'int'
    }

    attribute_map = {
        'file_name': 'fileName',
        'description': 'description',
        'file_url': 'fileUrl',
        'uploaded_by_email': 'uploadedByEmail',
        'uploaded_by_name': 'uploadedByName',
        'size': 'size'
    }

    def __init__(self, file_name=None, description=None, file_url=None, uploaded_by_email=None, uploaded_by_name=None, size=None):  # noqa: E501
        """CreateProjectRequestProjectAttachmentList - a model defined in Swagger"""  # noqa: E501
        self._file_name = None
        self._description = None
        self._file_url = None
        self._uploaded_by_email = None
        self._uploaded_by_name = None
        self._size = None
        self.discriminator = None
        self.file_name = file_name
        self.description = description
        self.file_url = file_url
        self.uploaded_by_email = uploaded_by_email
        self.uploaded_by_name = uploaded_by_name
        self.size = size

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

        Name of the attached file.  # noqa: E501

        :return: The file_name of this CreateProjectRequestProjectAttachmentList.  # noqa: E501
        :rtype: str
        """
        return self._file_name

    @file_name.setter
    def file_name(self, file_name):
        """Sets the file_name of this CreateProjectRequestProjectAttachmentList.

        Name of the attached file.  # noqa: E501

        :param file_name: The file_name of this CreateProjectRequestProjectAttachmentList.  # noqa: E501
        :type: str
        """
        if file_name is None:
            raise ValueError("Invalid value for `file_name`, must not be `None`")  # noqa: E501

        self._file_name = file_name

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

        Description of the attached file.  # noqa: E501

        :return: The description of this CreateProjectRequestProjectAttachmentList.  # noqa: E501
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description):
        """Sets the description of this CreateProjectRequestProjectAttachmentList.

        Description of the attached file.  # noqa: E501

        :param description: The description of this CreateProjectRequestProjectAttachmentList.  # noqa: E501
        :type: str
        """
        if description is None:
            raise ValueError("Invalid value for `description`, must not be `None`")  # noqa: E501

        self._description = description

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

        URL of the attached file.  # noqa: E501

        :return: The file_url of this CreateProjectRequestProjectAttachmentList.  # noqa: E501
        :rtype: str
        """
        return self._file_url

    @file_url.setter
    def file_url(self, file_url):
        """Sets the file_url of this CreateProjectRequestProjectAttachmentList.

        URL of the attached file.  # noqa: E501

        :param file_url: The file_url of this CreateProjectRequestProjectAttachmentList.  # noqa: E501
        :type: str
        """
        if file_url is None:
            raise ValueError("Invalid value for `file_url`, must not be `None`")  # noqa: E501

        self._file_url = file_url

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

        Email of the user who uploaded the file.  # noqa: E501

        :return: The uploaded_by_email of this CreateProjectRequestProjectAttachmentList.  # noqa: E501
        :rtype: str
        """
        return self._uploaded_by_email

    @uploaded_by_email.setter
    def uploaded_by_email(self, uploaded_by_email):
        """Sets the uploaded_by_email of this CreateProjectRequestProjectAttachmentList.

        Email of the user who uploaded the file.  # noqa: E501

        :param uploaded_by_email: The uploaded_by_email of this CreateProjectRequestProjectAttachmentList.  # noqa: E501
        :type: str
        """
        if uploaded_by_email is None:
            raise ValueError("Invalid value for `uploaded_by_email`, must not be `None`")  # noqa: E501

        self._uploaded_by_email = uploaded_by_email

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

        Name of the user who uploaded the file.  # noqa: E501

        :return: The uploaded_by_name of this CreateProjectRequestProjectAttachmentList.  # noqa: E501
        :rtype: str
        """
        return self._uploaded_by_name

    @uploaded_by_name.setter
    def uploaded_by_name(self, uploaded_by_name):
        """Sets the uploaded_by_name of this CreateProjectRequestProjectAttachmentList.

        Name of the user who uploaded the file.  # noqa: E501

        :param uploaded_by_name: The uploaded_by_name of this CreateProjectRequestProjectAttachmentList.  # noqa: E501
        :type: str
        """
        if uploaded_by_name is None:
            raise ValueError("Invalid value for `uploaded_by_name`, must not be `None`")  # noqa: E501

        self._uploaded_by_name = uploaded_by_name

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

        Size of the attached file in bytes.  # noqa: E501

        :return: The size of this CreateProjectRequestProjectAttachmentList.  # noqa: E501
        :rtype: int
        """
        return self._size

    @size.setter
    def size(self, size):
        """Sets the size of this CreateProjectRequestProjectAttachmentList.

        Size of the attached file in bytes.  # noqa: E501

        :param size: The size of this CreateProjectRequestProjectAttachmentList.  # noqa: E501
        :type: int
        """
        if size is None:
            raise ValueError("Invalid value for `size`, must not be `None`")  # noqa: E501

        self._size = size

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

        return self.__dict__ == other.__dict__

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