# coding=utf-8
# --------------------------------------------------------------------------
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------

from msrest.serialization import Model


class AdiEmsWebApiV2DtoWeatherTafTafQuery(Model):
    """Defines the options that can be used to query for TAF reports.

    :param airport_id: Optional airport ID for an airport returned by the
     Assets APIs. If set then ICAO code should not be set
    :type airport_id: int
    :param airport_icao: Optional airport ICAO code. If set then airportId
     should not be set
    :type airport_icao: str
    :param issue_range_from: Optional date range from filter. If set all TAFs
     issued after this value will be returned
    :type issue_range_from: datetime
    :param issue_range_to: Optional date range to filter. If set all TAFs
     issued before this value will be returned
    :type issue_range_to: datetime
    :param valid_range_from: Optional date range from filter. If set any TAF
     that is valid from this point to validRangeTo
     will be returned. If set validRangeTo must also be set
    :type valid_range_from: datetime
    :param valid_range_to: Optional date range from filter. If set any TAF
     that is valid to this point from validRangeFrom
     will be returned. If set validRangeFrom must also be set
    :type valid_range_to: datetime
    :param valid_time: Optional single time point for which to return all
     valid TAFs
    :type valid_time: datetime
    :param visibility_minimum: Optional value indicating the minimum observed
     visibility in miles. Since TAFs have multiple visibility values if any one
     value in the TAF meets
     this criteria that TAF will be returned
    :type visibility_minimum: float
    :param visibility_maximum: Optional value indicating the maximum observed
     visibility in miles. Since TAFs have multiple visibility values if any one
     value in the TAF meets
     this criteria that TAF will be returned
    :type visibility_maximum: float
    :param ceiling_minimum: Optional value indicating the minimum observed
     ceiling in feet. Since TAFs have multiple visibility values if any one
     value in the TAF meets
     this criteria that TAF will be returned
    :type ceiling_minimum: float
    :param ceiling_maximum: Optional value indicating the maximum observed
     ceiling in feet. Since TAFs have multiple visibility values if any one
     value in the TAF meets
     this criteria that TAF will be returned
    :type ceiling_maximum: float
    :param max_results: The maximum number of results to return. If set to 0
     all results will be returned. This defaults to 200
    :type max_results: int
    """

    _attribute_map = {
        'airport_id': {'key': 'airportId', 'type': 'int'},
        'airport_icao': {'key': 'airportIcao', 'type': 'str'},
        'issue_range_from': {'key': 'issueRangeFrom', 'type': 'iso-8601'},
        'issue_range_to': {'key': 'issueRangeTo', 'type': 'iso-8601'},
        'valid_range_from': {'key': 'validRangeFrom', 'type': 'iso-8601'},
        'valid_range_to': {'key': 'validRangeTo', 'type': 'iso-8601'},
        'valid_time': {'key': 'validTime', 'type': 'iso-8601'},
        'visibility_minimum': {'key': 'visibilityMinimum', 'type': 'float'},
        'visibility_maximum': {'key': 'visibilityMaximum', 'type': 'float'},
        'ceiling_minimum': {'key': 'ceilingMinimum', 'type': 'float'},
        'ceiling_maximum': {'key': 'ceilingMaximum', 'type': 'float'},
        'max_results': {'key': 'maxResults', 'type': 'int'},
    }

    def __init__(self, **kwargs):
        super(AdiEmsWebApiV2DtoWeatherTafTafQuery, self).__init__(**kwargs)
        self.airport_id = kwargs.get('airport_id', None)
        self.airport_icao = kwargs.get('airport_icao', None)
        self.issue_range_from = kwargs.get('issue_range_from', None)
        self.issue_range_to = kwargs.get('issue_range_to', None)
        self.valid_range_from = kwargs.get('valid_range_from', None)
        self.valid_range_to = kwargs.get('valid_range_to', None)
        self.valid_time = kwargs.get('valid_time', None)
        self.visibility_minimum = kwargs.get('visibility_minimum', None)
        self.visibility_maximum = kwargs.get('visibility_maximum', None)
        self.ceiling_minimum = kwargs.get('ceiling_minimum', None)
        self.ceiling_maximum = kwargs.get('ceiling_maximum', None)
        self.max_results = kwargs.get('max_results', None)
