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

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

    :param place_id: The place identifier
    :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
    :type installation_begin_date: datetime
    :param installation_end_date: The energy project installation end date
    :type installation_end_date: datetime
    :param installation_cost: The energy project installation cost
    :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
    :type utility_rebate: float
    :param funding_source: The funding source of the project
    :type funding_source: str
    :param project_manager: The project manager of the energy project
    :type project_manager: str
    :param note: The miscellaneous note about the project
    :type note: str
    :param energy_savings: The energy savings amount
    :type energy_savings: float
    :param energy_savings_unit_code: The energy savings unit code
    :type energy_savings_unit_code: str
    :param cost_savings: The cost savings amount
    :type cost_savings: float
    :param cost_savings_unit_code: The cost savings unit code
    :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, *, energy_project_code: str, energy_project_info: str, energy_project_type_code: str, place_id: int=None, installation_begin_date=None, installation_end_date=None, installation_cost: float=None, utility_rebate: float=None, funding_source: str=None, project_manager: str=None, note: str=None, energy_savings: float=None, energy_savings_unit_code: str=None, cost_savings: float=None, cost_savings_unit_code: str=None, **kwargs) -> None:
        super(EnergyProjectCreate, self).__init__(**kwargs)
        self.place_id = place_id
        self.energy_project_code = energy_project_code
        self.energy_project_info = energy_project_info
        self.installation_begin_date = installation_begin_date
        self.installation_end_date = installation_end_date
        self.installation_cost = installation_cost
        self.energy_project_type_code = energy_project_type_code
        self.utility_rebate = utility_rebate
        self.funding_source = funding_source
        self.project_manager = project_manager
        self.note = note
        self.energy_savings = energy_savings
        self.energy_savings_unit_code = energy_savings_unit_code
        self.cost_savings = cost_savings
        self.cost_savings_unit_code = cost_savings_unit_code
