# 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 SearchMeterChildSearchMeterChild(Model):
    """SearchMeterChildSearchMeterChild.

    All required parameters must be populated in order to send to Azure.

    :param meter_id: The meter identifier
    :type meter_id: int
    :param meter_code: Required. The meter code <span
     class='property-internal'>Required</span> <span
     class='property-internal'>Must be between 0 and 32 characters</span>
    :type meter_code: str
    :param meter_info: Required. The meter info <span
     class='property-internal'>Required</span> <span
     class='property-internal'>Must be between 0 and 50 characters</span>
    :type meter_info: str
    :param accounts: The collection of accounts
    :type accounts: list[~energycap.sdk.models.MeterAccountChild]
    :param commodity:
    :type commodity: ~energycap.sdk.models.CommodityChild
    :param meter_type:
    :type meter_type: ~energycap.sdk.models.MeterTypeChild
    :param postal_code: The address postal code
    :type postal_code: str
    :param city: The address city
    :type city: str
    :param state: The address state
    :type state: str
    :param country: The address country
    :type country: str
    :param line1: The address first line
    :type line1: str
    :param line2: The address second line
    :type line2: str
    :param line3: The address third line
    :type line3: str
    :param bill_entry_note: The bill entry note
    :type bill_entry_note: str
    :param include_in_energy_star: Indicates if the building is included in
     ENERGY STAR submissions
    :type include_in_energy_star: bool
    :param properties: An array of meter properties
    :type properties: dict[str, str]
    :param parent_path: The collection of places representing the path to its
     parent
    :type parent_path: list[~energycap.sdk.models.SearchParentPlaceChild]
    :param active: Indicates whether the meter is Active
    :type active: bool
    :param is_calculated_meter: Indicates whether the meter is a calculated
     meter
    :type is_calculated_meter: bool
    :param is_split_parent_meter: Indicates whether the meter is a parent of a
     split
    :type is_split_parent_meter: bool
    :param is_split_child_meter: Indicates whether the meter is a child of a
     split
    :type is_split_child_meter: bool
    :param previous_serial_number: The previous serial number of the meter
    :type previous_serial_number: str
    """

    _validation = {
        'meter_code': {'required': True, 'max_length': 32, 'min_length': 0},
        'meter_info': {'required': True, 'max_length': 50, 'min_length': 0},
    }

    _attribute_map = {
        'meter_id': {'key': 'meterId', 'type': 'int'},
        'meter_code': {'key': 'meterCode', 'type': 'str'},
        'meter_info': {'key': 'meterInfo', 'type': 'str'},
        'accounts': {'key': 'accounts', 'type': '[MeterAccountChild]'},
        'commodity': {'key': 'commodity', 'type': 'CommodityChild'},
        'meter_type': {'key': 'meterType', 'type': 'MeterTypeChild'},
        'postal_code': {'key': 'postalCode', 'type': 'str'},
        'city': {'key': 'city', 'type': 'str'},
        'state': {'key': 'state', 'type': 'str'},
        'country': {'key': 'country', 'type': 'str'},
        'line1': {'key': 'line1', 'type': 'str'},
        'line2': {'key': 'line2', 'type': 'str'},
        'line3': {'key': 'line3', 'type': 'str'},
        'bill_entry_note': {'key': 'billEntryNote', 'type': 'str'},
        'include_in_energy_star': {'key': 'includeInEnergyStar', 'type': 'bool'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'parent_path': {'key': 'parentPath', 'type': '[SearchParentPlaceChild]'},
        'active': {'key': 'active', 'type': 'bool'},
        'is_calculated_meter': {'key': 'isCalculatedMeter', 'type': 'bool'},
        'is_split_parent_meter': {'key': 'isSplitParentMeter', 'type': 'bool'},
        'is_split_child_meter': {'key': 'isSplitChildMeter', 'type': 'bool'},
        'previous_serial_number': {'key': 'previousSerialNumber', 'type': 'str'},
    }

    def __init__(self, **kwargs):
        super(SearchMeterChildSearchMeterChild, self).__init__(**kwargs)
        self.meter_id = kwargs.get('meter_id', None)
        self.meter_code = kwargs.get('meter_code', None)
        self.meter_info = kwargs.get('meter_info', None)
        self.accounts = kwargs.get('accounts', None)
        self.commodity = kwargs.get('commodity', None)
        self.meter_type = kwargs.get('meter_type', None)
        self.postal_code = kwargs.get('postal_code', None)
        self.city = kwargs.get('city', None)
        self.state = kwargs.get('state', None)
        self.country = kwargs.get('country', None)
        self.line1 = kwargs.get('line1', None)
        self.line2 = kwargs.get('line2', None)
        self.line3 = kwargs.get('line3', None)
        self.bill_entry_note = kwargs.get('bill_entry_note', None)
        self.include_in_energy_star = kwargs.get('include_in_energy_star', None)
        self.properties = kwargs.get('properties', None)
        self.parent_path = kwargs.get('parent_path', None)
        self.active = kwargs.get('active', None)
        self.is_calculated_meter = kwargs.get('is_calculated_meter', None)
        self.is_split_parent_meter = kwargs.get('is_split_parent_meter', None)
        self.is_split_child_meter = kwargs.get('is_split_child_meter', None)
        self.previous_serial_number = kwargs.get('previous_serial_number', None)
