"""
    HCL AppScan on Cloud (v2)

    This API allows you to interact with the service. The API allows you to perform many of the operations available in the UI and more.</br>For authentication, use the relevant APIs in the Account section. A successful authentication response includes a bearer token for use in subsequent API calls. Pasting this token in the 'Access token' field above will automatically add the authorization header to any API call that requires a valid session.

    OpenAPI spec version: v2

    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

from pyasoc.configuration import Configuration


class UserSiteCommonModelsFixGroup:
    """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 = {
        "id": "str",
        "app_id": "str",
        "fix_group_type": "str",
        "subject": "str",
        "fix_location_entity_type": "str",
        "severity": "str",
        "severity_value": "int",
        "n_issues": "int",
        "n_open_issues": "int",
        "issue_type_id": "str",
        "issue_type": "str",
        "date_created": "datetime",
        "last_updated": "datetime",
        "last_found": "datetime",
        "status": "str",
        "sticky_status": "bool",
        "file": "str",
        "line": "int",
        "hash_version": "int",
        "hash": "str",
        "notes": "str",
    }

    attribute_map = {
        "id": "Id",
        "app_id": "AppId",
        "fix_group_type": "FixGroupType",
        "subject": "Subject",
        "fix_location_entity_type": "FixLocationEntityType",
        "severity": "Severity",
        "severity_value": "SeverityValue",
        "n_issues": "NIssues",
        "n_open_issues": "NOpenIssues",
        "issue_type_id": "IssueTypeId",
        "issue_type": "IssueType",
        "date_created": "DateCreated",
        "last_updated": "LastUpdated",
        "last_found": "LastFound",
        "status": "Status",
        "sticky_status": "StickyStatus",
        "file": "File",
        "line": "Line",
        "hash_version": "HashVersion",
        "hash": "Hash",
        "notes": "Notes",
    }

    def __init__(
        self,
        id=None,
        app_id=None,
        fix_group_type=None,
        subject=None,
        fix_location_entity_type=None,
        severity=None,
        severity_value=None,
        n_issues=None,
        n_open_issues=None,
        issue_type_id=None,
        issue_type=None,
        date_created=None,
        last_updated=None,
        last_found=None,
        status=None,
        sticky_status=None,
        file=None,
        line=None,
        hash_version=None,
        hash=None,
        notes=None,
        _configuration=None,
    ):
        """UserSiteCommonModelsFixGroup - a model defined in Swagger"""
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._id = None
        self._app_id = None
        self._fix_group_type = None
        self._subject = None
        self._fix_location_entity_type = None
        self._severity = None
        self._severity_value = None
        self._n_issues = None
        self._n_open_issues = None
        self._issue_type_id = None
        self._issue_type = None
        self._date_created = None
        self._last_updated = None
        self._last_found = None
        self._status = None
        self._sticky_status = None
        self._file = None
        self._line = None
        self._hash_version = None
        self._hash = None
        self._notes = None
        self.discriminator = None

        self.id = id
        self.app_id = app_id
        self.fix_group_type = fix_group_type
        self.subject = subject
        self.fix_location_entity_type = fix_location_entity_type
        if severity is not None:
            self.severity = severity
        if severity_value is not None:
            self.severity_value = severity_value
        self.n_issues = n_issues
        self.n_open_issues = n_open_issues
        self.issue_type_id = issue_type_id
        self.issue_type = issue_type
        self.date_created = date_created
        if last_updated is not None:
            self.last_updated = last_updated
        if last_found is not None:
            self.last_found = last_found
        if status is not None:
            self.status = status
        self.sticky_status = sticky_status
        if file is not None:
            self.file = file
        if line is not None:
            self.line = line
        self.hash_version = hash_version
        self.hash = hash
        if notes is not None:
            self.notes = notes

    @property
    def id(self):
        # type: () -> str
        """Gets the id of this UserSiteCommonModelsFixGroup.


        :return: The id of this UserSiteCommonModelsFixGroup.
        :rtype: str
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this UserSiteCommonModelsFixGroup.


        :param id: The id of this UserSiteCommonModelsFixGroup.
        :type: str
        """
        if self._configuration.client_side_validation and id is None:
            raise ValueError("Invalid value for `id`, must not be `None`")

        self._id = id

    @property
    def app_id(self):
        # type: () -> str
        """Gets the app_id of this UserSiteCommonModelsFixGroup.


        :return: The app_id of this UserSiteCommonModelsFixGroup.
        :rtype: str
        """
        return self._app_id

    @app_id.setter
    def app_id(self, app_id):
        """Sets the app_id of this UserSiteCommonModelsFixGroup.


        :param app_id: The app_id of this UserSiteCommonModelsFixGroup.
        :type: str
        """
        if self._configuration.client_side_validation and app_id is None:
            raise ValueError("Invalid value for `app_id`, must not be `None`")

        self._app_id = app_id

    @property
    def fix_group_type(self):
        # type: () -> str
        """Gets the fix_group_type of this UserSiteCommonModelsFixGroup.


        :return: The fix_group_type of this UserSiteCommonModelsFixGroup.
        :rtype: str
        """
        return self._fix_group_type

    @fix_group_type.setter
    def fix_group_type(self, fix_group_type):
        """Sets the fix_group_type of this UserSiteCommonModelsFixGroup.


        :param fix_group_type: The fix_group_type of this UserSiteCommonModelsFixGroup.
        :type: str
        """
        if self._configuration.client_side_validation and fix_group_type is None:
            raise ValueError("Invalid value for `fix_group_type`, must not be `None`")
        allowed_values = ["OpenSourceLib", "FixLocation", "Api"]
        if self._configuration.client_side_validation and fix_group_type not in allowed_values:
            raise ValueError(
                "Invalid value for `fix_group_type` ({}), must be one of {}".format(
                    fix_group_type, allowed_values
                )
            )

        self._fix_group_type = fix_group_type

    @property
    def subject(self):
        # type: () -> str
        """Gets the subject of this UserSiteCommonModelsFixGroup.


        :return: The subject of this UserSiteCommonModelsFixGroup.
        :rtype: str
        """
        return self._subject

    @subject.setter
    def subject(self, subject):
        """Sets the subject of this UserSiteCommonModelsFixGroup.


        :param subject: The subject of this UserSiteCommonModelsFixGroup.
        :type: str
        """
        if self._configuration.client_side_validation and subject is None:
            raise ValueError("Invalid value for `subject`, must not be `None`")

        self._subject = subject

    @property
    def fix_location_entity_type(self):
        # type: () -> str
        """Gets the fix_location_entity_type of this UserSiteCommonModelsFixGroup.


        :return: The fix_location_entity_type of this UserSiteCommonModelsFixGroup.
        :rtype: str
        """
        return self._fix_location_entity_type

    @fix_location_entity_type.setter
    def fix_location_entity_type(self, fix_location_entity_type):
        """Sets the fix_location_entity_type of this UserSiteCommonModelsFixGroup.


        :param fix_location_entity_type: The fix_location_entity_type of this UserSiteCommonModelsFixGroup.
        :type: str
        """
        if self._configuration.client_side_validation and fix_location_entity_type is None:
            raise ValueError("Invalid value for `fix_location_entity_type`, must not be `None`")
        allowed_values = ["None", "ImplementationOf", "UsageOf"]
        if (
            self._configuration.client_side_validation
            and fix_location_entity_type not in allowed_values
        ):
            raise ValueError(
                "Invalid value for `fix_location_entity_type` ({}), must be one of {}".format(
                    fix_location_entity_type, allowed_values
                )
            )

        self._fix_location_entity_type = fix_location_entity_type

    @property
    def severity(self):
        # type: () -> str
        """Gets the severity of this UserSiteCommonModelsFixGroup.


        :return: The severity of this UserSiteCommonModelsFixGroup.
        :rtype: str
        """
        return self._severity

    @severity.setter
    def severity(self, severity):
        """Sets the severity of this UserSiteCommonModelsFixGroup.


        :param severity: The severity of this UserSiteCommonModelsFixGroup.
        :type: str
        """
        allowed_values = [
            "Undetermined",
            "Informational",
            "Low",
            "Medium",
            "High",
            "Critical",
        ]
        if self._configuration.client_side_validation and severity not in allowed_values:
            raise ValueError(
                "Invalid value for `severity` ({}), must be one of {}".format(
                    severity, allowed_values
                )
            )

        self._severity = severity

    @property
    def severity_value(self):
        # type: () -> int
        """Gets the severity_value of this UserSiteCommonModelsFixGroup.


        :return: The severity_value of this UserSiteCommonModelsFixGroup.
        :rtype: int
        """
        return self._severity_value

    @severity_value.setter
    def severity_value(self, severity_value):
        """Sets the severity_value of this UserSiteCommonModelsFixGroup.


        :param severity_value: The severity_value of this UserSiteCommonModelsFixGroup.
        :type: int
        """

        self._severity_value = severity_value

    @property
    def n_issues(self):
        # type: () -> int
        """Gets the n_issues of this UserSiteCommonModelsFixGroup.


        :return: The n_issues of this UserSiteCommonModelsFixGroup.
        :rtype: int
        """
        return self._n_issues

    @n_issues.setter
    def n_issues(self, n_issues):
        """Sets the n_issues of this UserSiteCommonModelsFixGroup.


        :param n_issues: The n_issues of this UserSiteCommonModelsFixGroup.
        :type: int
        """
        if self._configuration.client_side_validation and n_issues is None:
            raise ValueError("Invalid value for `n_issues`, must not be `None`")

        self._n_issues = n_issues

    @property
    def n_open_issues(self):
        # type: () -> int
        """Gets the n_open_issues of this UserSiteCommonModelsFixGroup.


        :return: The n_open_issues of this UserSiteCommonModelsFixGroup.
        :rtype: int
        """
        return self._n_open_issues

    @n_open_issues.setter
    def n_open_issues(self, n_open_issues):
        """Sets the n_open_issues of this UserSiteCommonModelsFixGroup.


        :param n_open_issues: The n_open_issues of this UserSiteCommonModelsFixGroup.
        :type: int
        """
        if self._configuration.client_side_validation and n_open_issues is None:
            raise ValueError("Invalid value for `n_open_issues`, must not be `None`")

        self._n_open_issues = n_open_issues

    @property
    def issue_type_id(self):
        # type: () -> str
        """Gets the issue_type_id of this UserSiteCommonModelsFixGroup.


        :return: The issue_type_id of this UserSiteCommonModelsFixGroup.
        :rtype: str
        """
        return self._issue_type_id

    @issue_type_id.setter
    def issue_type_id(self, issue_type_id):
        """Sets the issue_type_id of this UserSiteCommonModelsFixGroup.


        :param issue_type_id: The issue_type_id of this UserSiteCommonModelsFixGroup.
        :type: str
        """
        if self._configuration.client_side_validation and issue_type_id is None:
            raise ValueError("Invalid value for `issue_type_id`, must not be `None`")

        self._issue_type_id = issue_type_id

    @property
    def issue_type(self):
        # type: () -> str
        """Gets the issue_type of this UserSiteCommonModelsFixGroup.


        :return: The issue_type of this UserSiteCommonModelsFixGroup.
        :rtype: str
        """
        return self._issue_type

    @issue_type.setter
    def issue_type(self, issue_type):
        """Sets the issue_type of this UserSiteCommonModelsFixGroup.


        :param issue_type: The issue_type of this UserSiteCommonModelsFixGroup.
        :type: str
        """
        if self._configuration.client_side_validation and issue_type is None:
            raise ValueError("Invalid value for `issue_type`, must not be `None`")

        self._issue_type = issue_type

    @property
    def date_created(self):
        # type: () -> datetime
        """Gets the date_created of this UserSiteCommonModelsFixGroup.


        :return: The date_created of this UserSiteCommonModelsFixGroup.
        :rtype: datetime
        """
        return self._date_created

    @date_created.setter
    def date_created(self, date_created):
        """Sets the date_created of this UserSiteCommonModelsFixGroup.


        :param date_created: The date_created of this UserSiteCommonModelsFixGroup.
        :type: datetime
        """
        if self._configuration.client_side_validation and date_created is None:
            raise ValueError("Invalid value for `date_created`, must not be `None`")

        self._date_created = date_created

    @property
    def last_updated(self):
        # type: () -> datetime
        """Gets the last_updated of this UserSiteCommonModelsFixGroup.


        :return: The last_updated of this UserSiteCommonModelsFixGroup.
        :rtype: datetime
        """
        return self._last_updated

    @last_updated.setter
    def last_updated(self, last_updated):
        """Sets the last_updated of this UserSiteCommonModelsFixGroup.


        :param last_updated: The last_updated of this UserSiteCommonModelsFixGroup.
        :type: datetime
        """

        self._last_updated = last_updated

    @property
    def last_found(self):
        # type: () -> datetime
        """Gets the last_found of this UserSiteCommonModelsFixGroup.


        :return: The last_found of this UserSiteCommonModelsFixGroup.
        :rtype: datetime
        """
        return self._last_found

    @last_found.setter
    def last_found(self, last_found):
        """Sets the last_found of this UserSiteCommonModelsFixGroup.


        :param last_found: The last_found of this UserSiteCommonModelsFixGroup.
        :type: datetime
        """

        self._last_found = last_found

    @property
    def status(self):
        # type: () -> str
        """Gets the status of this UserSiteCommonModelsFixGroup.


        :return: The status of this UserSiteCommonModelsFixGroup.
        :rtype: str
        """
        return self._status

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


        :param status: The status of this UserSiteCommonModelsFixGroup.
        :type: str
        """
        allowed_values = [
            "Open",
            "InProgress",
            "Reopened",
            "Noise",
            "Passed",
            "Fixed",
            "New",
        ]
        if self._configuration.client_side_validation and status not in allowed_values:
            raise ValueError(
                f"Invalid value for `status` ({status}), must be one of {allowed_values}"
            )

        self._status = status

    @property
    def sticky_status(self):
        # type: () -> bool
        """Gets the sticky_status of this UserSiteCommonModelsFixGroup.


        :return: The sticky_status of this UserSiteCommonModelsFixGroup.
        :rtype: bool
        """
        return self._sticky_status

    @sticky_status.setter
    def sticky_status(self, sticky_status):
        """Sets the sticky_status of this UserSiteCommonModelsFixGroup.


        :param sticky_status: The sticky_status of this UserSiteCommonModelsFixGroup.
        :type: bool
        """
        if self._configuration.client_side_validation and sticky_status is None:
            raise ValueError("Invalid value for `sticky_status`, must not be `None`")

        self._sticky_status = sticky_status

    @property
    def file(self):
        # type: () -> str
        """Gets the file of this UserSiteCommonModelsFixGroup.


        :return: The file of this UserSiteCommonModelsFixGroup.
        :rtype: str
        """
        return self._file

    @file.setter
    def file(self, file):
        """Sets the file of this UserSiteCommonModelsFixGroup.


        :param file: The file of this UserSiteCommonModelsFixGroup.
        :type: str
        """

        self._file = file

    @property
    def line(self):
        # type: () -> int
        """Gets the line of this UserSiteCommonModelsFixGroup.


        :return: The line of this UserSiteCommonModelsFixGroup.
        :rtype: int
        """
        return self._line

    @line.setter
    def line(self, line):
        """Sets the line of this UserSiteCommonModelsFixGroup.


        :param line: The line of this UserSiteCommonModelsFixGroup.
        :type: int
        """

        self._line = line

    @property
    def hash_version(self):
        # type: () -> int
        """Gets the hash_version of this UserSiteCommonModelsFixGroup.


        :return: The hash_version of this UserSiteCommonModelsFixGroup.
        :rtype: int
        """
        return self._hash_version

    @hash_version.setter
    def hash_version(self, hash_version):
        """Sets the hash_version of this UserSiteCommonModelsFixGroup.


        :param hash_version: The hash_version of this UserSiteCommonModelsFixGroup.
        :type: int
        """
        if self._configuration.client_side_validation and hash_version is None:
            raise ValueError("Invalid value for `hash_version`, must not be `None`")

        self._hash_version = hash_version

    @property
    def hash(self):
        # type: () -> str
        """Gets the hash of this UserSiteCommonModelsFixGroup.


        :return: The hash of this UserSiteCommonModelsFixGroup.
        :rtype: str
        """
        return self._hash

    @hash.setter
    def hash(self, hash):
        """Sets the hash of this UserSiteCommonModelsFixGroup.


        :param hash: The hash of this UserSiteCommonModelsFixGroup.
        :type: str
        """
        if self._configuration.client_side_validation and hash is None:
            raise ValueError("Invalid value for `hash`, must not be `None`")

        self._hash = hash

    @property
    def notes(self):
        # type: () -> str
        """Gets the notes of this UserSiteCommonModelsFixGroup.


        :return: The notes of this UserSiteCommonModelsFixGroup.
        :rtype: str
        """
        return self._notes

    @notes.setter
    def notes(self, notes):
        """Sets the notes of this UserSiteCommonModelsFixGroup.


        :param notes: The notes of this UserSiteCommonModelsFixGroup.
        :type: str
        """

        self._notes = notes

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

        for attr, _ in self.swagger_types.items():
            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(UserSiteCommonModelsFixGroup, 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, UserSiteCommonModelsFixGroup):
            return False

        return self.to_dict() == other.to_dict()

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

        return self.to_dict() != other.to_dict()
