# coding: utf-8

"""
    apply-api

    The Apply API allows for seamless integration of the Phenom systems, enabling partners to push applications directly. This API also enables partners to integrate the Phenom Quick application process into their own job boards, while still maintaining control over the candidate experience. As a result, candidates can submit their applications without needing to visit the customer career site.  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class EducationData(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 = {
        'school_name': 'str',
        'degree': 'str',
        'field_of_study': 'str',
        'grade_average': 'str',
        'from_to': 'FromTo'
    }

    attribute_map = {
        'school_name': 'schoolName',
        'degree': 'degree',
        'field_of_study': 'fieldOfStudy',
        'grade_average': 'gradeAverage',
        'from_to': 'fromTo'
    }

    def __init__(self, school_name=None, degree=None, field_of_study=None, grade_average=None, from_to=None):  # noqa: E501
        """EducationData - a model defined in Swagger"""  # noqa: E501
        self._school_name = None
        self._degree = None
        self._field_of_study = None
        self._grade_average = None
        self._from_to = None
        self.discriminator = None
        self.school_name = school_name
        self.degree = degree
        if field_of_study is not None:
            self.field_of_study = field_of_study
        if grade_average is not None:
            self.grade_average = grade_average
        if from_to is not None:
            self.from_to = from_to

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

        School/College/Institution Name.  # noqa: E501

        :return: The school_name of this EducationData.  # noqa: E501
        :rtype: str
        """
        return self._school_name

    @school_name.setter
    def school_name(self, school_name):
        """Sets the school_name of this EducationData.

        School/College/Institution Name.  # noqa: E501

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

        self._school_name = school_name

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

        Degree you have majored in.  # noqa: E501

        :return: The degree of this EducationData.  # noqa: E501
        :rtype: str
        """
        return self._degree

    @degree.setter
    def degree(self, degree):
        """Sets the degree of this EducationData.

        Degree you have majored in.  # noqa: E501

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

        self._degree = degree

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

        Specialization/Field of Study.  # noqa: E501

        :return: The field_of_study of this EducationData.  # noqa: E501
        :rtype: str
        """
        return self._field_of_study

    @field_of_study.setter
    def field_of_study(self, field_of_study):
        """Sets the field_of_study of this EducationData.

        Specialization/Field of Study.  # noqa: E501

        :param field_of_study: The field_of_study of this EducationData.  # noqa: E501
        :type: str
        """

        self._field_of_study = field_of_study

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

        Grade Average/CGPA/Percentage.  # noqa: E501

        :return: The grade_average of this EducationData.  # noqa: E501
        :rtype: str
        """
        return self._grade_average

    @grade_average.setter
    def grade_average(self, grade_average):
        """Sets the grade_average of this EducationData.

        Grade Average/CGPA/Percentage.  # noqa: E501

        :param grade_average: The grade_average of this EducationData.  # noqa: E501
        :type: str
        """

        self._grade_average = grade_average

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


        :return: The from_to of this EducationData.  # noqa: E501
        :rtype: FromTo
        """
        return self._from_to

    @from_to.setter
    def from_to(self, from_to):
        """Sets the from_to of this EducationData.


        :param from_to: The from_to of this EducationData.  # noqa: E501
        :type: FromTo
        """

        self._from_to = from_to

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

        return self.__dict__ == other.__dict__

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