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

    :param flag_id: The flag identifier
    :type flag_id: int
    :param flag_type:
    :type flag_type: ~energycap.sdk.models.FlagTypeChild
    :param flag_status:
    :type flag_status: ~energycap.sdk.models.FlagStatusChild
    :param created_by:
    :type created_by: ~energycap.sdk.models.UserChild
    :param created_date: Date the flag was created
    :type created_date: datetime
    :param modified_by:
    :type modified_by: ~energycap.sdk.models.UserChild
    :param modified_date: Latest date the flag was modified
    :type modified_date: datetime
    :param cost_recovery: Cost recovery associated with the issue this flag
     represents
    :type cost_recovery: float
    :param flag_events: All events and actions that have occurred with this
     flag
    :type flag_events: list[~energycap.sdk.models.FlagEventChild]
    :param assignees: All users currently assigned to this flag
    :type assignees: list[~energycap.sdk.models.UserChild]
    :param flag_issues: All issues associated with the flag
     Even if the flag is marked as resolved, the list of issues that were on
     the flag at that time will remain.
     This keeps a historic record and allows for filtering.
    :type flag_issues: list[~energycap.sdk.models.FlagIssueTypeChild]
    """

    _attribute_map = {
        'flag_id': {'key': 'flagId', 'type': 'int'},
        'flag_type': {'key': 'flagType', 'type': 'FlagTypeChild'},
        'flag_status': {'key': 'flagStatus', 'type': 'FlagStatusChild'},
        'created_by': {'key': 'createdBy', 'type': 'UserChild'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'modified_by': {'key': 'modifiedBy', 'type': 'UserChild'},
        'modified_date': {'key': 'modifiedDate', 'type': 'iso-8601'},
        'cost_recovery': {'key': 'costRecovery', 'type': 'float'},
        'flag_events': {'key': 'flagEvents', 'type': '[FlagEventChild]'},
        'assignees': {'key': 'assignees', 'type': '[UserChild]'},
        'flag_issues': {'key': 'flagIssues', 'type': '[FlagIssueTypeChild]'},
    }

    def __init__(self, **kwargs):
        super(FlagResponse, self).__init__(**kwargs)
        self.flag_id = kwargs.get('flag_id', None)
        self.flag_type = kwargs.get('flag_type', None)
        self.flag_status = kwargs.get('flag_status', None)
        self.created_by = kwargs.get('created_by', None)
        self.created_date = kwargs.get('created_date', None)
        self.modified_by = kwargs.get('modified_by', None)
        self.modified_date = kwargs.get('modified_date', None)
        self.cost_recovery = kwargs.get('cost_recovery', None)
        self.flag_events = kwargs.get('flag_events', None)
        self.assignees = kwargs.get('assignees', None)
        self.flag_issues = kwargs.get('flag_issues', None)
