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

    :param place:
    :type place: ~energycap.sdk.models.TopmostPlace
    :param cost_center:
    :type cost_center: ~energycap.sdk.models.TopmostCostCenter
    :param token: User's authentication token
    :type token: str
    :param external_user_id: User's external user ID
    :type external_user_id: str
    :param system_user_code: Username
    :type system_user_code: str
    :param system_user_id: Unique identifier for the user
    :type system_user_id: int
    :param full_name: User's full name
    :type full_name: str
    :param email: User's email address
    :type email: str
    :param number_of_accounting_periods: Number of accounting periods
     configured for the user's owner
    :type number_of_accounting_periods: int
    :param calendarization_method: Calendarization configured for user's owner
    :type calendarization_method: str
    :param fiscal_year_start_month: Fiscal year start month configured for the
     user's owner
    :type fiscal_year_start_month: int
    :param fiscal_year_method: Method configured for identification of fiscal
     year for the user's owner
    :type fiscal_year_method: str
    :param claim: List of the user's claims
    :type claim: list[~energycap.sdk.models.Claim]
    :param preference:
    :type preference: ~energycap.sdk.models.Preference
    :param date_formats: Available date formats
    :type date_formats: list[str]
    :param time_formats: Available time formats
    :type time_formats: list[~energycap.sdk.models.TimeFormatResponse]
    :param currency_unit:
    :type currency_unit: ~energycap.sdk.models.UnitChild
    :param current_accounting_period: Current account period calculated from
     configuration for the user's owner
    :type current_accounting_period: int
    :param user_role_name: User's user role
    :type user_role_name: str
    :param permissions:
    :type permissions: ~energycap.sdk.models.Permissions
    :param feature_flags: List of enabled feature flags
    :type feature_flags: list[str]
    :param upgrade_version_v3: Upgrade version number (Version 3)
    :type upgrade_version_v3: str
    :param upgrade_version_v7: Upgrade version number (Version 7)
    :type upgrade_version_v7: str
    :param sku: Application SKU as set in the license code
    :type sku: str
    :param environment: Current environment
    :type environment: str
    :param build_date: Build date for the current application version
    :type build_date: datetime
    :param report_distribution_from_email_address: The email address to use as
     the sender for report distribution
    :type report_distribution_from_email_address: str
    :param report_distribution_from_email_name: The email name to use as the
     sender for report distribution
    :type report_distribution_from_email_name: str
    :param application_mode: The current mode of the application
     Values: Online, Offline
    :type application_mode: str
    :param current_database_version: The current version of the database
    :type current_database_version: int
    :param utility_platform_settings:
    :type utility_platform_settings: ~energycap.sdk.models.UtilityPlatform
    :param unplaced_meters_parent_id: Node where unplaced meters are assigned
    :type unplaced_meters_parent_id: int
    :param unplaced_accounts_parent_id: Node where unplaced accounts are
     assigned
    :type unplaced_accounts_parent_id: int
    """

    _attribute_map = {
        'place': {'key': 'place', 'type': 'TopmostPlace'},
        'cost_center': {'key': 'costCenter', 'type': 'TopmostCostCenter'},
        'token': {'key': 'token', 'type': 'str'},
        'external_user_id': {'key': 'externalUserId', 'type': 'str'},
        'system_user_code': {'key': 'systemUserCode', 'type': 'str'},
        'system_user_id': {'key': 'systemUserId', 'type': 'int'},
        'full_name': {'key': 'fullName', 'type': 'str'},
        'email': {'key': 'email', 'type': 'str'},
        'number_of_accounting_periods': {'key': 'numberOfAccountingPeriods', 'type': 'int'},
        'calendarization_method': {'key': 'calendarizationMethod', 'type': 'str'},
        'fiscal_year_start_month': {'key': 'fiscalYearStartMonth', 'type': 'int'},
        'fiscal_year_method': {'key': 'fiscalYearMethod', 'type': 'str'},
        'claim': {'key': 'claim', 'type': '[Claim]'},
        'preference': {'key': 'preference', 'type': 'Preference'},
        'date_formats': {'key': 'dateFormats', 'type': '[str]'},
        'time_formats': {'key': 'timeFormats', 'type': '[TimeFormatResponse]'},
        'currency_unit': {'key': 'currencyUnit', 'type': 'UnitChild'},
        'current_accounting_period': {'key': 'currentAccountingPeriod', 'type': 'int'},
        'user_role_name': {'key': 'userRoleName', 'type': 'str'},
        'permissions': {'key': 'permissions', 'type': 'Permissions'},
        'feature_flags': {'key': 'featureFlags', 'type': '[str]'},
        'upgrade_version_v3': {'key': 'upgradeVersion_V3', 'type': 'str'},
        'upgrade_version_v7': {'key': 'upgradeVersion_V7', 'type': 'str'},
        'sku': {'key': 'sku', 'type': 'str'},
        'environment': {'key': 'environment', 'type': 'str'},
        'build_date': {'key': 'buildDate', 'type': 'iso-8601'},
        'report_distribution_from_email_address': {'key': 'reportDistributionFromEmailAddress', 'type': 'str'},
        'report_distribution_from_email_name': {'key': 'reportDistributionFromEmailName', 'type': 'str'},
        'application_mode': {'key': 'applicationMode', 'type': 'str'},
        'current_database_version': {'key': 'currentDatabaseVersion', 'type': 'int'},
        'utility_platform_settings': {'key': 'utilityPlatformSettings', 'type': 'UtilityPlatform'},
        'unplaced_meters_parent_id': {'key': 'unplacedMetersParentId', 'type': 'int'},
        'unplaced_accounts_parent_id': {'key': 'unplacedAccountsParentId', 'type': 'int'},
    }

    def __init__(self, *, place=None, cost_center=None, token: str=None, external_user_id: str=None, system_user_code: str=None, system_user_id: int=None, full_name: str=None, email: str=None, number_of_accounting_periods: int=None, calendarization_method: str=None, fiscal_year_start_month: int=None, fiscal_year_method: str=None, claim=None, preference=None, date_formats=None, time_formats=None, currency_unit=None, current_accounting_period: int=None, user_role_name: str=None, permissions=None, feature_flags=None, upgrade_version_v3: str=None, upgrade_version_v7: str=None, sku: str=None, environment: str=None, build_date=None, report_distribution_from_email_address: str=None, report_distribution_from_email_name: str=None, application_mode: str=None, current_database_version: int=None, utility_platform_settings=None, unplaced_meters_parent_id: int=None, unplaced_accounts_parent_id: int=None, **kwargs) -> None:
        super(Me, self).__init__(**kwargs)
        self.place = place
        self.cost_center = cost_center
        self.token = token
        self.external_user_id = external_user_id
        self.system_user_code = system_user_code
        self.system_user_id = system_user_id
        self.full_name = full_name
        self.email = email
        self.number_of_accounting_periods = number_of_accounting_periods
        self.calendarization_method = calendarization_method
        self.fiscal_year_start_month = fiscal_year_start_month
        self.fiscal_year_method = fiscal_year_method
        self.claim = claim
        self.preference = preference
        self.date_formats = date_formats
        self.time_formats = time_formats
        self.currency_unit = currency_unit
        self.current_accounting_period = current_accounting_period
        self.user_role_name = user_role_name
        self.permissions = permissions
        self.feature_flags = feature_flags
        self.upgrade_version_v3 = upgrade_version_v3
        self.upgrade_version_v7 = upgrade_version_v7
        self.sku = sku
        self.environment = environment
        self.build_date = build_date
        self.report_distribution_from_email_address = report_distribution_from_email_address
        self.report_distribution_from_email_name = report_distribution_from_email_name
        self.application_mode = application_mode
        self.current_database_version = current_database_version
        self.utility_platform_settings = utility_platform_settings
        self.unplaced_meters_parent_id = unplaced_meters_parent_id
        self.unplaced_accounts_parent_id = unplaced_accounts_parent_id
