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

    :param organization_name: The organization name <span
     class='property-internal'>Required (defined)</span>
    :type organization_name: str
    :param display_organization_name_in_header: Indicates whether or not
     organization name should be displayed in the application header <span
     class='property-internal'>Required</span>
    :type display_organization_name_in_header: bool
    :param organization_logo: The organization logo
     May be a base64-encoded PNG, JPG, or SVG image or a URI for an image
     hosted online
     A null value will clear the saved image <span
     class='property-internal'>Required (defined)</span>
    :type organization_logo: str
    :param automatic_logout_minutes: Number of minutes after which users will
     be automatically logged out <span class='property-internal'>Must be
     between 10 and 780</span> <span class='property-internal'>Required
     (defined)</span>
    :type automatic_logout_minutes: int
    :param default_country: Default country for new users <span
     class='property-internal'>Required (defined)</span>
    :type default_country: str
    :param default_meter_time_zone_id: ID of the default time zone for new
     meters <span class='property-internal'>Required</span>
    :type default_meter_time_zone_id: int
    :param default_date_format: Default date format for new users <span
     class='property-internal'>One of MM/dd/yyyy, dd/MM/yyyy </span> <span
     class='property-internal'>Required (defined)</span>
    :type default_date_format: str
    :param default_topmost_cost_center_id: Default topmost cost center ID for
     new users <span class='property-internal'>Required (defined)</span>
    :type default_topmost_cost_center_id: int
    :param default_topmost_place_id: Default topmost place ID for new users
     <span class='property-internal'>Required (defined)</span>
    :type default_topmost_place_id: int
    :param default_user_role_id: Default user role ID for new users <span
     class='property-internal'>Required (defined)</span>
    :type default_user_role_id: int
    """

    _validation = {
        'display_organization_name_in_header': {'required': True},
        'organization_logo': {'min_length': 5},
        'automatic_logout_minutes': {'maximum': 780, 'minimum': 10},
        'default_meter_time_zone_id': {'required': True},
    }

    _attribute_map = {
        'organization_name': {'key': 'organizationName', 'type': 'str'},
        'display_organization_name_in_header': {'key': 'displayOrganizationNameInHeader', 'type': 'bool'},
        'organization_logo': {'key': 'organizationLogo', 'type': 'str'},
        'automatic_logout_minutes': {'key': 'automaticLogoutMinutes', 'type': 'int'},
        'default_country': {'key': 'defaultCountry', 'type': 'str'},
        'default_meter_time_zone_id': {'key': 'defaultMeterTimeZoneId', 'type': 'int'},
        'default_date_format': {'key': 'defaultDateFormat', 'type': 'str'},
        'default_topmost_cost_center_id': {'key': 'defaultTopmostCostCenterId', 'type': 'int'},
        'default_topmost_place_id': {'key': 'defaultTopmostPlaceId', 'type': 'int'},
        'default_user_role_id': {'key': 'defaultUserRoleId', 'type': 'int'},
    }

    def __init__(self, display_organization_name_in_header, default_meter_time_zone_id, organization_name=None, organization_logo=None, automatic_logout_minutes=None, default_country=None, default_date_format=None, default_topmost_cost_center_id=None, default_topmost_place_id=None, default_user_role_id=None):
        super(SystemSettingsRequest, self).__init__()
        self.organization_name = organization_name
        self.display_organization_name_in_header = display_organization_name_in_header
        self.organization_logo = organization_logo
        self.automatic_logout_minutes = automatic_logout_minutes
        self.default_country = default_country
        self.default_meter_time_zone_id = default_meter_time_zone_id
        self.default_date_format = default_date_format
        self.default_topmost_cost_center_id = default_topmost_cost_center_id
        self.default_topmost_place_id = default_topmost_place_id
        self.default_user_role_id = default_user_role_id
