# coding: utf-8

"""
    RegObs API

      ## Introduction    RegObs is a tool for collecting observations and events   related to natural hazards. It is currently used by the   Norwegian flood, landslide and avalanche warning service in   Norway, but the data is openly available for anyone through this API.    Regobs has been developed by the Norwegian Water resources and   Energy Directorate (NVE), in collaboration with the Norwegian   Meteorological Institute (MET) and the Norwegian Public Roads   Administration (NPRA).    You can check out our representation of the data at [regobs.no](http://regobs.no).    ## Authentication    Some endpoints require an api key.  You can get an API key by sending an email to   [raek@nve.no](mailto:raek@nve.no?subject=RegObs%20API%20Key).  To use the api key with the swagger ui, fill in the api\\_key input above.   It should then be included with every request in the   `regObs_apptoken` header.    ## Getting started    Get the last 10 observations using python:    ```python  import requests  r = requests.post('https://api.regobs.no/v4/Search',       data={'NumberOfRecords': 10},      headers={'Content-Type': 'application/json'}  )  data = r.json()  print(len(data))  # 10  ```      # noqa: E501

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

import pprint
import re  # noqa: F401

import six


class AvalancheActivityObsDto(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 = {
        'avalanche_activity_obs_id': 'int',
        'aspect': 'int',
        'heigth_start_zone': 'int',
        'dt_avalanche_time': 'datetime',
        'destructive_size_tid': 'int',
        'estimated_num_tid': 'int',
        'avalanche_tid': 'int',
        'avalanche_trigger_tid': 'int',
        'terrain_start_zone_tid': 'int',
        'snow_line': 'int',
        'usage_flag_tid': 'int',
        'comment': 'str'
    }

    attribute_map = {
        'avalanche_activity_obs_id': 'AvalancheActivityObsID',
        'aspect': 'Aspect',
        'heigth_start_zone': 'HeigthStartZone',
        'dt_avalanche_time': 'DtAvalancheTime',
        'destructive_size_tid': 'DestructiveSizeTID',
        'estimated_num_tid': 'EstimatedNumTID',
        'avalanche_tid': 'AvalancheTID',
        'avalanche_trigger_tid': 'AvalancheTriggerTID',
        'terrain_start_zone_tid': 'TerrainStartZoneTID',
        'snow_line': 'SnowLine',
        'usage_flag_tid': 'UsageFlagTID',
        'comment': 'Comment'
    }

    def __init__(self, avalanche_activity_obs_id=None, aspect=None, heigth_start_zone=None, dt_avalanche_time=None, destructive_size_tid=None, estimated_num_tid=None, avalanche_tid=None, avalanche_trigger_tid=None, terrain_start_zone_tid=None, snow_line=None, usage_flag_tid=None, comment=None):  # noqa: E501
        """AvalancheActivityObsDto - a model defined in Swagger"""  # noqa: E501
        self._avalanche_activity_obs_id = None
        self._aspect = None
        self._heigth_start_zone = None
        self._dt_avalanche_time = None
        self._destructive_size_tid = None
        self._estimated_num_tid = None
        self._avalanche_tid = None
        self._avalanche_trigger_tid = None
        self._terrain_start_zone_tid = None
        self._snow_line = None
        self._usage_flag_tid = None
        self._comment = None
        self.discriminator = None
        self.avalanche_activity_obs_id = avalanche_activity_obs_id
        self.aspect = aspect
        self.heigth_start_zone = heigth_start_zone
        self.dt_avalanche_time = dt_avalanche_time
        if destructive_size_tid is not None:
            self.destructive_size_tid = destructive_size_tid
        if estimated_num_tid is not None:
            self.estimated_num_tid = estimated_num_tid
        if avalanche_tid is not None:
            self.avalanche_tid = avalanche_tid
        if avalanche_trigger_tid is not None:
            self.avalanche_trigger_tid = avalanche_trigger_tid
        if terrain_start_zone_tid is not None:
            self.terrain_start_zone_tid = terrain_start_zone_tid
        if snow_line is not None:
            self.snow_line = snow_line
        if usage_flag_tid is not None:
            self.usage_flag_tid = usage_flag_tid
        if comment is not None:
            self.comment = comment

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

        Unik id på denne tabellen da flere er mulig pr RegID.  # noqa: E501

        :return: The avalanche_activity_obs_id of this AvalancheActivityObsDto.  # noqa: E501
        :rtype: int
        """
        return self._avalanche_activity_obs_id

    @avalanche_activity_obs_id.setter
    def avalanche_activity_obs_id(self, avalanche_activity_obs_id):
        """Sets the avalanche_activity_obs_id of this AvalancheActivityObsDto.

        Unik id på denne tabellen da flere er mulig pr RegID.  # noqa: E501

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

        self._avalanche_activity_obs_id = avalanche_activity_obs_id

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

        Hvilken side av fjellene har skredene gått? Gis i grader slik gitt på kompass. 0 er nord og 90 er øst osv.  # noqa: E501

        :return: The aspect of this AvalancheActivityObsDto.  # noqa: E501
        :rtype: int
        """
        return self._aspect

    @aspect.setter
    def aspect(self, aspect):
        """Sets the aspect of this AvalancheActivityObsDto.

        Hvilken side av fjellene har skredene gått? Gis i grader slik gitt på kompass. 0 er nord og 90 er øst osv.  # noqa: E501

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

        self._aspect = aspect

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

        Meter over havet på løsneområdet.  # noqa: E501

        :return: The heigth_start_zone of this AvalancheActivityObsDto.  # noqa: E501
        :rtype: int
        """
        return self._heigth_start_zone

    @heigth_start_zone.setter
    def heigth_start_zone(self, heigth_start_zone):
        """Sets the heigth_start_zone of this AvalancheActivityObsDto.

        Meter over havet på løsneområdet.  # noqa: E501

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

        self._heigth_start_zone = heigth_start_zone

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

        Når gikk skredene? Her bruker vi feltet som en ca. tid og brukerene oppfordres til å anta best mulig.  # noqa: E501

        :return: The dt_avalanche_time of this AvalancheActivityObsDto.  # noqa: E501
        :rtype: datetime
        """
        return self._dt_avalanche_time

    @dt_avalanche_time.setter
    def dt_avalanche_time(self, dt_avalanche_time):
        """Sets the dt_avalanche_time of this AvalancheActivityObsDto.

        Når gikk skredene? Her bruker vi feltet som en ca. tid og brukerene oppfordres til å anta best mulig.  # noqa: E501

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

        self._dt_avalanche_time = dt_avalanche_time

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

        Hvor store er skredene?. The DestructiveSizeKD unique identifier  # noqa: E501

        :return: The destructive_size_tid of this AvalancheActivityObsDto.  # noqa: E501
        :rtype: int
        """
        return self._destructive_size_tid

    @destructive_size_tid.setter
    def destructive_size_tid(self, destructive_size_tid):
        """Sets the destructive_size_tid of this AvalancheActivityObsDto.

        Hvor store er skredene?. The DestructiveSizeKD unique identifier  # noqa: E501

        :param destructive_size_tid: The destructive_size_tid of this AvalancheActivityObsDto.  # noqa: E501
        :type: int
        """

        self._destructive_size_tid = destructive_size_tid

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

        Hvor mange skred er gått? The EstimatedNumKD unique identifier  # noqa: E501

        :return: The estimated_num_tid of this AvalancheActivityObsDto.  # noqa: E501
        :rtype: int
        """
        return self._estimated_num_tid

    @estimated_num_tid.setter
    def estimated_num_tid(self, estimated_num_tid):
        """Sets the estimated_num_tid of this AvalancheActivityObsDto.

        Hvor mange skred er gått? The EstimatedNumKD unique identifier  # noqa: E501

        :param estimated_num_tid: The estimated_num_tid of this AvalancheActivityObsDto.  # noqa: E501
        :type: int
        """

        self._estimated_num_tid = estimated_num_tid

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

        Typen skred som er gått. The AvalancheKD unique identifier  # noqa: E501

        :return: The avalanche_tid of this AvalancheActivityObsDto.  # noqa: E501
        :rtype: int
        """
        return self._avalanche_tid

    @avalanche_tid.setter
    def avalanche_tid(self, avalanche_tid):
        """Sets the avalanche_tid of this AvalancheActivityObsDto.

        Typen skred som er gått. The AvalancheKD unique identifier  # noqa: E501

        :param avalanche_tid: The avalanche_tid of this AvalancheActivityObsDto.  # noqa: E501
        :type: int
        """

        self._avalanche_tid = avalanche_tid

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

        Hva utløste skredet? Det er ofte beskrevet som det svake laget i snødekket. The AvalancheTriggerKD unique identifier  # noqa: E501

        :return: The avalanche_trigger_tid of this AvalancheActivityObsDto.  # noqa: E501
        :rtype: int
        """
        return self._avalanche_trigger_tid

    @avalanche_trigger_tid.setter
    def avalanche_trigger_tid(self, avalanche_trigger_tid):
        """Sets the avalanche_trigger_tid of this AvalancheActivityObsDto.

        Hva utløste skredet? Det er ofte beskrevet som det svake laget i snødekket. The AvalancheTriggerKD unique identifier  # noqa: E501

        :param avalanche_trigger_tid: The avalanche_trigger_tid of this AvalancheActivityObsDto.  # noqa: E501
        :type: int
        """

        self._avalanche_trigger_tid = avalanche_trigger_tid

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

        Hva slags terrengtype var det i løsneområdet. The TerrainStartZoneKD unique identifier  # noqa: E501

        :return: The terrain_start_zone_tid of this AvalancheActivityObsDto.  # noqa: E501
        :rtype: int
        """
        return self._terrain_start_zone_tid

    @terrain_start_zone_tid.setter
    def terrain_start_zone_tid(self, terrain_start_zone_tid):
        """Sets the terrain_start_zone_tid of this AvalancheActivityObsDto.

        Hva slags terrengtype var det i løsneområdet. The TerrainStartZoneKD unique identifier  # noqa: E501

        :param terrain_start_zone_tid: The terrain_start_zone_tid of this AvalancheActivityObsDto.  # noqa: E501
        :type: int
        """

        self._terrain_start_zone_tid = terrain_start_zone_tid

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

        Hvor går snøgrensa i området?  # noqa: E501

        :return: The snow_line of this AvalancheActivityObsDto.  # noqa: E501
        :rtype: int
        """
        return self._snow_line

    @snow_line.setter
    def snow_line(self, snow_line):
        """Sets the snow_line of this AvalancheActivityObsDto.

        Hvor går snøgrensa i området?  # noqa: E501

        :param snow_line: The snow_line of this AvalancheActivityObsDto.  # noqa: E501
        :type: int
        """

        self._snow_line = snow_line

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

        Bruksflagg er ikke implementert enda. Hensikten er å kunne flagge en observasjon som godkjent, underkjent, overført historisk database mm.  # noqa: E501

        :return: The usage_flag_tid of this AvalancheActivityObsDto.  # noqa: E501
        :rtype: int
        """
        return self._usage_flag_tid

    @usage_flag_tid.setter
    def usage_flag_tid(self, usage_flag_tid):
        """Sets the usage_flag_tid of this AvalancheActivityObsDto.

        Bruksflagg er ikke implementert enda. Hensikten er å kunne flagge en observasjon som godkjent, underkjent, overført historisk database mm.  # noqa: E501

        :param usage_flag_tid: The usage_flag_tid of this AvalancheActivityObsDto.  # noqa: E501
        :type: int
        """

        self._usage_flag_tid = usage_flag_tid

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

        Kommentarfelt for å skrive utfyllende tekst om observasjonen.  # noqa: E501

        :return: The comment of this AvalancheActivityObsDto.  # noqa: E501
        :rtype: str
        """
        return self._comment

    @comment.setter
    def comment(self, comment):
        """Sets the comment of this AvalancheActivityObsDto.

        Kommentarfelt for å skrive utfyllende tekst om observasjonen.  # noqa: E501

        :param comment: The comment of this AvalancheActivityObsDto.  # noqa: E501
        :type: str
        """

        self._comment = comment

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

        return self.__dict__ == other.__dict__

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