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

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

    :param place_id: The place identifier <span
     class='property-internal'>Required (defined)</span>
    :type place_id: int
    :param energy_project_code: Required. The energy project code <span
     class='property-internal'>Required</span> <span
     class='property-internal'>Must be between 0 and 128 characters</span>
    :type energy_project_code: str
    :param energy_project_info: Required. The energy project info <span
     class='property-internal'>Required</span> <span
     class='property-internal'>Must be between 0 and 128 characters</span>
    :type energy_project_info: str
    :param installation_begin_date: The energy project installation begin date
     <span class='property-internal'>Required (defined)</span>
    :type installation_begin_date: datetime
    :param installation_end_date: The energy project installation end date
     <span class='property-internal'>Required (defined)</span>
    :type installation_end_date: datetime
    :param installation_cost: The energy project installation cost <span
     class='property-internal'>Required (defined)</span>
    :type installation_cost: float
    :param energy_project_type_code: Required. The energy project type code
     <span class='property-internal'>Required</span>
    :type energy_project_type_code: str
    :param utility_rebate: The rebate amount of energy project <span
     class='property-internal'>Required (defined)</span>
    :type utility_rebate: float
    :param funding_source: The funding source of the project <span
     class='property-internal'>Required (defined)</span>
    :type funding_source: str
    :param project_manager: The project manager of the energy project <span
     class='property-internal'>Required (defined)</span>
    :type project_manager: str
    :param note: The miscellaneous note about the project <span
     class='property-internal'>Required (defined)</span>
    :type note: str
    :param energy_savings: The energy savings amount <span
     class='property-internal'>Required (defined)</span>
    :type energy_savings: float
    :param energy_savings_unit_code: The energy savings unit code <span
     class='property-internal'>Required (defined)</span>
    :type energy_savings_unit_code: str
    :param cost_savings: The cost savings amount <span
     class='property-internal'>Required (defined)</span>
    :type cost_savings: float
    :param cost_savings_unit_code: The cost savings unit code <span
     class='property-internal'>Required (defined)</span>
    :type cost_savings_unit_code: str
    """

    _validation = {
        'energy_project_code': {'required': True, 'max_length': 128, 'min_length': 0},
        'energy_project_info': {'required': True, 'max_length': 128, 'min_length': 0},
        'energy_project_type_code': {'required': True},
    }

    _attribute_map = {
        'place_id': {'key': 'placeId', 'type': 'int'},
        'energy_project_code': {'key': 'energyProjectCode', 'type': 'str'},
        'energy_project_info': {'key': 'energyProjectInfo', 'type': 'str'},
        'installation_begin_date': {'key': 'installationBeginDate', 'type': 'iso-8601'},
        'installation_end_date': {'key': 'installationEndDate', 'type': 'iso-8601'},
        'installation_cost': {'key': 'installationCost', 'type': 'float'},
        'energy_project_type_code': {'key': 'energyProjectTypeCode', 'type': 'str'},
        'utility_rebate': {'key': 'utilityRebate', 'type': 'float'},
        'funding_source': {'key': 'fundingSource', 'type': 'str'},
        'project_manager': {'key': 'projectManager', 'type': 'str'},
        'note': {'key': 'note', 'type': 'str'},
        'energy_savings': {'key': 'energySavings', 'type': 'float'},
        'energy_savings_unit_code': {'key': 'energySavingsUnitCode', 'type': 'str'},
        'cost_savings': {'key': 'costSavings', 'type': 'float'},
        'cost_savings_unit_code': {'key': 'costSavingsUnitCode', 'type': 'str'},
    }

    def __init__(self, **kwargs):
        super(EnergyProjectEdit, self).__init__(**kwargs)
        self.place_id = kwargs.get('place_id', None)
        self.energy_project_code = kwargs.get('energy_project_code', None)
        self.energy_project_info = kwargs.get('energy_project_info', None)
        self.installation_begin_date = kwargs.get('installation_begin_date', None)
        self.installation_end_date = kwargs.get('installation_end_date', None)
        self.installation_cost = kwargs.get('installation_cost', None)
        self.energy_project_type_code = kwargs.get('energy_project_type_code', None)
        self.utility_rebate = kwargs.get('utility_rebate', None)
        self.funding_source = kwargs.get('funding_source', None)
        self.project_manager = kwargs.get('project_manager', None)
        self.note = kwargs.get('note', None)
        self.energy_savings = kwargs.get('energy_savings', None)
        self.energy_savings_unit_code = kwargs.get('energy_savings_unit_code', None)
        self.cost_savings = kwargs.get('cost_savings', None)
        self.cost_savings_unit_code = kwargs.get('cost_savings_unit_code', None)
