# coding: utf-8

from __future__ import absolute_import
from datetime import date, datetime  # noqa: F401

from typing import List, Dict  # noqa: F401

from swagger_server.models.base_model_ import Model
from swagger_server import util


class Survey(Model):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    def __init__(self, date: datetime=None, image_nb: int=None, location: str=None, name: str=None, sensors: str=None, size: str=None, survey_id: int=None):  # noqa: E501
        """Survey - a model defined in Swagger

        :param date: The date of this Survey.  # noqa: E501
        :type date: datetime
        :param image_nb: The image_nb of this Survey.  # noqa: E501
        :type image_nb: int
        :param location: The location of this Survey.  # noqa: E501
        :type location: str
        :param name: The name of this Survey.  # noqa: E501
        :type name: str
        :param sensors: The sensors of this Survey.  # noqa: E501
        :type sensors: str
        :param size: The size of this Survey.  # noqa: E501
        :type size: str
        :param survey_id: The survey_id of this Survey.  # noqa: E501
        :type survey_id: int
        """
        self.swagger_types = {
            'date': datetime,
            'image_nb': int,
            'location': str,
            'name': str,
            'sensors': str,
            'size': str,
            'survey_id': int
        }

        self.attribute_map = {
            'date': 'date',
            'image_nb': 'image_nb',
            'location': 'location',
            'name': 'name',
            'sensors': 'sensors',
            'size': 'size',
            'survey_id': 'survey_id'
        }

        self._date = date
        self._image_nb = image_nb
        self._location = location
        self._name = name
        self._sensors = sensors
        self._size = size
        self._survey_id = survey_id

    @classmethod
    def from_dict(cls, dikt) -> 'Survey':
        """Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The Survey of this Survey.  # noqa: E501
        :rtype: Survey
        """
        return util.deserialize_model(dikt, cls)

    @property
    def date(self) -> datetime:
        """Gets the date of this Survey.


        :return: The date of this Survey.
        :rtype: datetime
        """
        return self._date

    @date.setter
    def date(self, date: datetime):
        """Sets the date of this Survey.


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

        self._date = date

    @property
    def image_nb(self) -> int:
        """Gets the image_nb of this Survey.


        :return: The image_nb of this Survey.
        :rtype: int
        """
        return self._image_nb

    @image_nb.setter
    def image_nb(self, image_nb: int):
        """Sets the image_nb of this Survey.


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

        self._image_nb = image_nb

    @property
    def location(self) -> str:
        """Gets the location of this Survey.


        :return: The location of this Survey.
        :rtype: str
        """
        return self._location

    @location.setter
    def location(self, location: str):
        """Sets the location of this Survey.


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

        self._location = location

    @property
    def name(self) -> str:
        """Gets the name of this Survey.


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

    @name.setter
    def name(self, name: str):
        """Sets the name of this Survey.


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

        self._name = name

    @property
    def sensors(self) -> str:
        """Gets the sensors of this Survey.


        :return: The sensors of this Survey.
        :rtype: str
        """
        return self._sensors

    @sensors.setter
    def sensors(self, sensors: str):
        """Sets the sensors of this Survey.


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

        self._sensors = sensors

    @property
    def size(self) -> str:
        """Gets the size of this Survey.

        Survey size  # noqa: E501

        :return: The size of this Survey.
        :rtype: str
        """
        return self._size

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

        Survey size  # noqa: E501

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

        self._size = size

    @property
    def survey_id(self) -> int:
        """Gets the survey_id of this Survey.


        :return: The survey_id of this Survey.
        :rtype: int
        """
        return self._survey_id

    @survey_id.setter
    def survey_id(self, survey_id: int):
        """Sets the survey_id of this Survey.


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

        self._survey_id = survey_id
