# By: Riasat Ullah
# This file contains test data for incidents.

from constants import static_vars, var_names
from system_tests.test_data import test_data_policies, test_data_services, test_data_users
from system_tests import test_tools
import datetime
import json
import random

today = datetime.datetime.now()

alerts_list = [
    {
        var_names.task_ref_id: test_tools.get_dummy_reference_id(),
        var_names.task_title: "Position Monitor Failed - Urgent Check Needed",
        var_names.created_by: None,
        var_names.urgency_level: static_vars.high_urgency,
        var_names.text_msg: r'''
**Firing**

Value: B=22, C=1
Labels:
 - alertname = TestAlert
 - grafana_folder = Test Folder
 - instance = Grafana
Annotations:
 - summary = Notification test
Source: ?orgId=1
Silence: https://influxdbprod.super.local:3000/alerting/silence/new?alertmanager=grafana&matcher=alertname%3DTestAlert&matcher=grafana_folder%3DTest+Folder&matcher=instance%3DGrafana&orgId=1
Dashboard: https://influxdbprod.super.local:3000/d/dashboard_uid?from=1760096746353&orgId=1&to=1760100346450
Panel: https://influxdbprod.super.local:3000/d/dashboard_uid?from=1760096746353&orgId=1&to=1760100346450&viewPanel=1
        ''',
        # var_names.text_msg: r'''Position monitor has failed... Traceback (most recent call last):
        #     File "C:\Users\riasat.ullah\AppData\Local\Programs\Python\Python35\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec)
        #     File "C:\Users\riasat.ullah\AppData\Local\Programs\Python\Python35\lib\runpy.py", line 85, in _run_code exec(code, run_globals)
        #     File "C:\Users\riasat.ullah\PycharmProjects\taskcallrest\jobs\instance_monitor.py", line 246, in time.sleep(wait_seconds)
        #     KeyboardInterrupt''',
        var_names.snapshots: ['https://d1v0bax3d3bxs8.cloudfront.net/server-monitoring/cpu-usage.png'],
        var_names.voice_messages: ['https://www.learningcontainer.com/wp-content/uploads/2020/02/Kalimba.mp3'],
        var_names.vendor_url: 'https://www.wormly.com/help/performance-monitoring/cpu-usage',
        var_names.services: test_data_services.services_basic_list[3],
        var_names.trigger_method: 'LIVE_CALL_ROUTING',
        var_names.labels: {'tags': ['database', 'apac']}
    },
    {
        var_names.task_ref_id: test_tools.get_dummy_reference_id(),
        var_names.task_title: "Security master could not be generated. Multiple entries found for ticker - AAPL",
        var_names.created_by: None,
        var_names.urgency_level: static_vars.high_urgency,
        var_names.text_msg: r'''
{'ActiveNotificationTriggerID': '2088726116', 'CustomerName': 'Ecentric Payment Systems > CPT_Prod',
'DeviceName': '192.168.113.110', 'DeviceURI': '192.168.113.110', 'ExternalCustomerID': None, 'AffectedService': 'HTTPS',
'TaskIdent': None, 'NcentralURI': 'ncentral.super.local', 'QualitativeOldState': 'Normal',
'QualitativeNewState': 'Failed',  'TimeOfStateChange': '2025-09-18 21:41:25',
'RemoteControlLink': 'https://ncentral.super.local:8443/deepLinkAction.do?method=deviceRC&customerID=104&deviceID=1148759566&language=en_US',
'ProbeURI': 'ncentral.super.local', 'ServiceOrganizationName': 'Ecentric Payment Systems',
'TaskTriggeringScanDetail': 'https response time'}
        ''',
        # var_names.text_msg: r'''Position monitor has failed... Traceback (most recent call last):
        # File "C:\Users\riasat.ullah\AppData\Local\Programs\Python\Python35\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec)
        # File "C:\Users\riasat.ullah\AppData\Local\Programs\Python\Python35\lib\runpy.py", line 85, in _run_code exec(code, run_globals)
        # File "C:\Users\riasat.ullah\PycharmProjects\taskcallrest\jobs\instance_monitor.py", line 246, in time.sleep(wait_seconds)
        # KeyboardInterrupt''',
        var_names.snapshots: ['https://taskcallapp.com/images/app/SampleGraph.png'],
        var_names.voice_messages: ['https://www.learningcontainer.com/wp-content/uploads/2020/02/Kalimba.mp3'],
        var_names.vendor_url: 'https://www.wormly.com/help/performance-monitoring/cpu-usage',
        var_names.services: test_data_services.services_basic_list[0],
        var_names.trigger_method: 'LIVE_CALL_ROUTING'
    },
    {
        var_names.task_ref_id: test_tools.get_dummy_reference_id(),
        var_names.task_title: "Production server 10 has crashed. Immediate fix needed.",
        var_names.created_by: None,
        var_names.urgency_level: static_vars.high_urgency,
        var_names.text_msg: r'''Position monitor has failed... Traceback (most recent call last):
    File "C:\Users\riasat.ullah\AppData\Local\Programs\Python\Python35\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec)
    File "C:\Users\riasat.ullah\AppData\Local\Programs\Python\Python35\lib\runpy.py", line 85, in _run_code exec(code, run_globals)
    File "C:\Users\riasat.ullah\PycharmProjects\taskcallrest\jobs\instance_monitor.py", line 246, in time.sleep(wait_seconds)
    KeyboardInterrupt''',
        var_names.snapshots: ['https://d1v0bax3d3bxs8.cloudfront.net/server-monitoring/cpu-usage.png'],
        var_names.voice_messages: ['https://www.learningcontainer.com/wp-content/uploads/2020/02/Kalimba.mp3'],
        var_names.vendor_url: 'https://www.wormly.com/help/performance-monitoring/cpu-usage',
        var_names.services: test_data_services.services_basic_list[0],
        var_names.trigger_method: 'LIVE_CALL_ROUTING'
    },
    {
        var_names.task_ref_id: test_tools.get_dummy_reference_id(),
        var_names.task_title: "Subscription payments could not be processed",
        var_names.created_by: None,
        var_names.urgency_level: static_vars.high_urgency,
        var_names.text_msg: r'''Position monitor has failed... Traceback (most recent call last):
        File "C:\Users\riasat.ullah\AppData\Local\Programs\Python\Python35\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec)
        File "C:\Users\riasat.ullah\AppData\Local\Programs\Python\Python35\lib\runpy.py", line 85, in _run_code exec(code, run_globals)
        File "C:\Users\riasat.ullah\PycharmProjects\taskcallrest\jobs\instance_monitor.py", line 246, in time.sleep(wait_seconds)
        KeyboardInterrupt''',
        var_names.services: test_data_services.services_basic_list[1],
        var_names.trigger_method: 'EMAIL'
    }
]


alerts_payload = [
    {
        var_names.utc_timestamp: (today + datetime.timedelta(days=9)).strftime('%Y-%m-%d %H:%M:%S'),
        var_names.title: alerts_list[0][var_names.task_title],
        var_names.description: alerts_list[0][var_names.text_msg],
        var_names.urgency_level: alerts_list[0][var_names.urgency_level],
        var_names.trigger_method: static_vars.api,
        var_names.source_payload: {
            "handle_bar": "sfsa0dfdnfkk43",
            "internal_id": 12021
        },
        var_names.notes: None,
        var_names.tags: ['internal'],
        var_names.dedup_key: 'it-ops',
        var_names.integration_key: None
    }
]


incident_list = [
    {
        var_names.instance_id: 31,
        var_names.organization_instance_id: 11,
        var_names.instance_timestamp: today,
        var_names.next_alert_timestamp: today + datetime.timedelta(minutes=12),
        var_names.resolved_on: None,
        var_names.status: static_vars.open_state,
        var_names.task_title: 'Position Monitor Failed - Urgent Check Needed',
        var_names.urgency_level: static_vars.high_urgency,
        var_names.services: test_data_services.services_basic_list[3],
        var_names.assignees: test_data_users.users_list[4:6]
    },
    {
        var_names.instance_id: 32,
        var_names.organization_instance_id: 12,
        var_names.instance_timestamp: today,
        var_names.next_alert_timestamp: today + datetime.timedelta(minutes=9),
        var_names.resolved_on: None,
        var_names.status: static_vars.acknowledged_state,
        var_names.task_title: 'Security master could not be generated. Multiple entries found for ticker - AAPL',
        var_names.urgency_level: static_vars.high_urgency,
        var_names.services: None,
        var_names.assignees: [test_data_users.users_list[1]]
    },
    {
        var_names.instance_id: 101,
        var_names.organization_instance_id: 87,
        var_names.instance_timestamp: today,
        var_names.next_alert_timestamp: today + datetime.timedelta(minutes=14),
        var_names.resolved_on: None,
        var_names.status: static_vars.acknowledged_state,
        var_names.task_title: 'Authentication Error',
        var_names.urgency_level: static_vars.medium_urgency,
        var_names.services: test_data_services.services_basic_list[1],
        var_names.assignees: [test_data_users.users_list[2]]
    },
    {
        var_names.instance_id: 201,
        var_names.organization_instance_id: 144,
        var_names.instance_timestamp: today,
        var_names.next_alert_timestamp: today + datetime.timedelta(minutes=7),
        var_names.resolved_on: today,
        var_names.status: static_vars.open_state,
        var_names.task_title: 'Production server 10 has crashed. Immediate fix needed.',
        var_names.urgency_level: static_vars.high_urgency,
        var_names.services: test_data_services.services_basic_list[2],
        var_names.assignees: [test_data_users.users_list[0]]
    },
    {
        var_names.instance_id: 202,
        var_names.organization_instance_id: 145,
        var_names.instance_timestamp: today,
        var_names.next_alert_timestamp: today + datetime.timedelta(minutes=2),
        var_names.resolved_on: None,
        var_names.status: static_vars.open_state,
        var_names.task_title: 'Subscription payments could not be processed',
        var_names.urgency_level: static_vars.critical_urgency,
        var_names.services: None,
        var_names.assignees: test_data_users.users_list[7:9]
    },
    {
        var_names.instance_id: 51,
        var_names.organization_instance_id: 211,
        var_names.instance_timestamp: today - datetime.timedelta(minutes=12),
        var_names.next_alert_timestamp: today - datetime.timedelta(minutes=5),
        var_names.resolved_on: today + datetime.timedelta(minutes=10),
        var_names.status: static_vars.resolved_state,
        var_names.task_title: 'Position Monitor Failed - Urgent Check Needed',
        var_names.urgency_level: static_vars.critical_urgency,
        var_names.services: test_data_services.services_basic_list[1],
        var_names.assignees: [test_data_users.users_list[3]]
    },
    {
        var_names.instance_id: 52,
        var_names.organization_instance_id: 212,
        var_names.instance_timestamp: today - datetime.timedelta(minutes=2),
        var_names.next_alert_timestamp: today - datetime.timedelta(minutes=9),
        var_names.resolved_on: today,
        var_names.status: static_vars.resolved_state,
        var_names.task_title: 'Security master could not be generated. Multiple entries found for ticker - AAPL',
        var_names.urgency_level: static_vars.minor_urgency,
        var_names.services: None,
        var_names.assignees: [test_data_users.users_list[6]]
    },
    {
        var_names.instance_id: 53,
        var_names.organization_instance_id: 213,
        var_names.instance_timestamp: today - datetime.timedelta(minutes=7),
        var_names.next_alert_timestamp: today - datetime.timedelta(minutes=12),
        var_names.resolved_on: today,
        var_names.status: static_vars.resolved_state,
        var_names.task_title: 'Web platform is crashing',
        var_names.urgency_level: static_vars.high_urgency,
        var_names.services: test_data_services.services_basic_list[0],
        var_names.assignees: [test_data_users.users_list[4]]
    },
    {
        var_names.instance_id: 54,
        var_names.organization_instance_id: 214,
        var_names.instance_timestamp: today,
        var_names.next_alert_timestamp: today - datetime.timedelta(minutes=9),
        var_names.resolved_on: today + datetime.timedelta(minutes=6),
        var_names.status: static_vars.resolved_state,
        var_names.task_title: 'System update is still pending',
        var_names.urgency_level: static_vars.low_urgency,
        var_names.services: test_data_services.services_basic_list[3],
        var_names.assignees: [test_data_users.users_list[5]]
    }
]


incident_details = {
    incident_list[0][var_names.organization_instance_id]: {
        **dict((k, incident_list[0][k])
               for k in [var_names.instance_id, var_names.organization_instance_id, var_names.instance_timestamp,
                         var_names.next_alert_timestamp, var_names.resolved_on, var_names.status]),
        **{var_names.assignees: [item + [test_data_users.user_details[item[1]][var_names.profile_picture]]
                                 for item in incident_list[0][var_names.assignees]]},
        **{
            var_names.task: alerts_list[0],
            var_names.events: [
                {
                    var_names.event_type: 'TRIGGER',
                    var_names.event_timestamp: today,
                    var_names.event_method: 'INTERNAL',
                    var_names.event_by: None,
                    var_names.event_log: None
                },
                {
                    var_names.event_type: 'ADD CONFERENCE BRIDGE',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=1),
                    var_names.event_method: 'WEBSITE',
                    var_names.event_by: 'Adam Smith',
                    var_names.event_log: json.dumps({
                        var_names.conference_url: 'https://zoom.us/12349876',
                        var_names.conference_phone: '9546767890,,,125#'
                    })
                },
                {
                    var_names.event_type: 'ADD IMPACTED BUSINESS SERVICE',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=2),
                    var_names.event_method: 'WEBSITE',
                    var_names.event_by: 'Adam Smith',
                    var_names.event_log: None,
                },
                {
                    var_names.event_type: 'ADD RESPONDERS',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=2),
                    var_names.event_method: 'APP',
                    var_names.event_by: 'Adam Smith',
                    var_names.event_log: None,
                },
                {
                    var_names.event_type: 'ADD SUBSCRIBERS',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=2),
                    var_names.event_method: 'WEBSITE',
                    var_names.event_by: 'Adam Smith',
                    var_names.event_log: None,
                },
                {
                    var_names.event_type: 'CALL FORWARDING',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=3),
                    var_names.event_method: 'LIVE_CALL_ROUTING',
                    var_names.event_by: None,
                    var_names.event_log: None,
                },
                {
                    var_names.event_type: 'CALL VOICEMAIL PROMPT',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=4),
                    var_names.event_method: 'LIVE_CALL_ROUTING',
                    var_names.event_by: 'Adam Smith',
                    var_names.event_log: None,
                },
                {
                    var_names.event_type: 'CALL ANSWERED',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=4),
                    var_names.event_method: 'LIVE_CALL_ROUTING',
                    var_names.event_by: 'Adam Smith',
                    var_names.event_log: None,
                },
                {
                    var_names.event_type: 'CALL ENDED',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=6),
                    var_names.event_method: 'LIVE_CALL_ROUTING',
                    var_names.event_by: 'Adam Smith',
                    var_names.event_log: None,
                },
                {
                    var_names.event_type: 'CALL OUTGOING',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=7),
                    var_names.event_method: 'LIVE_CALL_ROUTING',
                    var_names.event_by: 'Adam Smith',
                    var_names.event_log: None,
                },
                {
                    var_names.event_type: 'CALL ENDED',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=8),
                    var_names.event_method: 'LIVE_CALL_ROUTING',
                    var_names.event_by: 'Adam Smith',
                    var_names.event_log: None,
                },
                {
                    var_names.event_type: 'RUN WORKFLOW',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=9),
                    var_names.event_method: 'WEBSITE',
                    var_names.event_by: 'Hannah Kelsey',
                    var_names.event_log: json.dumps({
                        var_names.workflow_name: 'Major Impact Workflow'
                    }),
                },
                {
                    var_names.event_type: 'CUSTOM ACTION',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=9),
                    var_names.event_method: 'WEBSITE',
                    var_names.event_by: 'Hannah Kelsey',
                    var_names.event_log: json.dumps({
                        var_names.configuration_name: 'Run System Diagnostics'
                    }),
                },
                {
                    var_names.event_type: 'NOTATE',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=10),
                    var_names.event_method: 'RUNDECK',
                    var_names.event_by: None,
                    var_names.event_log: json.dumps({
                        var_names.notes: "System diagnostics check succeeded: https://zingbats.demo-stage.rundeck/project/logistics-runbook/execution/follow/6083#show"
                    }),
                },
                {
                    var_names.event_type: 'EDIT TITLE',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=11),
                    var_names.event_method: 'APP',
                    var_names.event_by: None,
                    var_names.event_log: json.dumps({
                        var_names.task_title: 'Position Monitor Failed - Urgent Check Needed'
                    }),
                },
                {
                    var_names.event_type: 'ESCALATE',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=15),
                    var_names.event_method: 'INTERNAL',
                    var_names.event_by: None,
                    var_names.event_log: None
                },
                {
                    var_names.event_type: 'MERGE',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=16),
                    var_names.event_method: 'WEBSITE',
                    var_names.event_by: 'Hannah Kelsey',
                    var_names.event_log: None
                },
                {
                    var_names.event_type: 'REASSIGN',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=17),
                    var_names.event_method: 'APP',
                    var_names.event_by: 'Hannah Kelsey',
                    var_names.event_log: None
                },
                {
                    var_names.event_type: 'NOTATE',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=21),
                    var_names.event_method: 'WEBSITE',
                    var_names.event_by: 'Mike Hawthorn',
                    var_names.event_log: json.dumps({
                        var_names.notes: "This is a recurring event and needs to be addressed more closely " +
                                         "afterwards. This has happened in the past far too many times. We " +
                                         "need to focus on the server side issue. The problem starts from  " +
                                         "our backend and then rolls on to clients."
                    }),
                },
                {
                    var_names.event_type: 'URGENCY AMENDMENT',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=22),
                    var_names.event_method: 'WEBSITE',
                    var_names.event_by: 'Mike Hawthorn',
                    var_names.event_log: json.dumps({
                        var_names.urgency_level: 4
                    }),
                },
                {
                    var_names.event_type: 'STATUS UPDATE',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=22),
                    var_names.event_method: 'WEBSITE',
                    var_names.event_by: 'Mike Hawthorn',
                    var_names.event_log: json.dumps({
                        var_names.status_update: "Issue has been resolved. Server will be back up in 3 minutes."
                    }),
                },
                {
                    var_names.event_type: 'RESOLVE',
                    var_names.event_timestamp: today + datetime.timedelta(minutes=23),
                    var_names.event_method: 'WEBSITE',
                    var_names.event_by: 'Mike Hawthorn',
                    var_names.event_log: None
                },
            ],
            var_names.notes: [
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=2),
                    var_names.display_name: 'Adam Louis',
                    var_names.notes: "This same alert happened last week: https://www.infoworld.com/article/3271126/what-is-cicd-continuous-integration-and-continuous-delivery-explained.html. We should do what we did the last time."
                },
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=4),
                    var_names.display_name: "Jennifer Ballero",
                    var_names.notes: "The issue was actually somewhat different. We had to restart the server."
                }
            ],
            var_names.impacted_business_services: test_data_services.business_services_basic_list[0:2],
            var_names.subscribers: [item + [test_data_users.user_details[item[1]][var_names.profile_picture]]
                                    for item in test_data_users.users_list[2:8]],
            var_names.status_update: [
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=6),
                    var_names.display_name: "John Kaiser",
                    var_names.status_update: "The issue has been identified. Resolution should take another " +
                                             "5 minutes at max."
                },
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=4),
                    var_names.display_name: 'John Kaiser',
                    var_names.status_update: "We are aware of the business impact and are working towards fixing it. " +
                                             "We have 3 people on the job already."
                }
            ],
            var_names.conference_bridges: ['315-262-5399,,,,12456#', 'https://zoom.us'],
            var_names.synced_vendors: [
                {
                    var_names.synced_with: 'Jira Cloud',
                    var_names.vendor_id: 'JIRA123',
                    var_names.vendor_url: 'https://atlassian.com'
                },
                {
                    var_names.synced_with: 'Zendesk',
                    var_names.vendor_id: 'JIRA124',
                    var_names.vendor_url: 'https://atlassian.com',
                    var_names.additional_info: None
                },
                {
                    var_names.synced_with: 'ServiceNow',
                    var_names.vendor_id: 'jmoisafis-0dfk2f2d',
                    var_names.vendor_url: 'https://servicenow.com',
                    var_names.additional_info: {var_names.display_name: 'INC00002'}
                }
            ]
        }
    },
    incident_list[1][var_names.organization_instance_id]: {
        **dict((k, incident_list[1][k])
               for k in [var_names.instance_id, var_names.organization_instance_id, var_names.instance_timestamp,
                         var_names.next_alert_timestamp, var_names.resolved_on, var_names.status]),
        **{var_names.assignees: [item + [test_data_users.user_details[item[1]][var_names.profile_picture]]
                                 for item in incident_list[0][var_names.assignees]]},
        **{
            var_names.task: alerts_list[1],
            var_names.events: [
                {
                    var_names.event_type: 'DISPATCH',
                    var_names.event_timestamp: today,
                    var_names.event_by: None,
                    var_names.event_log: None
                }
            ],
            var_names.notes: [
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=2),
                    var_names.display_name: 'Adam Louis',
                    var_names.notes: "This same alert happened last week. We should do what we did the last time."
                },
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=4),
                    var_names.display_name: "Jennifer Ballero",
                    var_names.notes: "The issue was actually somewhat different. We had to restart the server."
                }
            ],
            var_names.impacted_business_services: test_data_services.business_services_basic_list[0:2],
            var_names.subscribers: [item + [test_data_users.user_details[item[1]][var_names.profile_picture]]
                                    for item in test_data_users.users_list[2:8]],
            var_names.status_update: [
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=6),
                    var_names.display_name: "John Kaiser",
                    var_names.status_update: "The issue has been identified. Resolution should take another " +
                                             "5 minutes at max."
                },
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=4),
                    var_names.display_name: 'John Kaiser',
                    var_names.status_update: "We are aware of the business impact and are working towards fixing it. " +
                                             "We have 3 people on the job already."
                }
            ],
            var_names.conference_bridges: ['315-262-5399,,,,12456#', 'https://zoom.us'],
            var_names.synced_vendors: [
                {
                    var_names.synced_with: 'Jira Cloud',
                    var_names.vendor_id: 'JIRA123',
                    var_names.vendor_url: 'https://atlassian.com'
                },
                {
                    var_names.synced_with: 'Zendesk',
                    var_names.vendor_id: 'JIRA124',
                    var_names.vendor_url: 'https://atlassian.com'
                }
            ]
        }
    },
    incident_list[2][var_names.organization_instance_id]: {
        **dict((k, incident_list[2][k])
               for k in [var_names.instance_id, var_names.organization_instance_id, var_names.instance_timestamp,
                         var_names.next_alert_timestamp, var_names.resolved_on, var_names.status]),
        **{var_names.assignees: [item + [test_data_users.user_details[item[1]][var_names.profile_picture]]
                                 for item in incident_list[0][var_names.assignees]]},
        **{
            var_names.task: alerts_list[2],
            var_names.events: [
                {
                    var_names.event_type: 'DISPATCH',
                    var_names.event_timestamp: today,
                    var_names.event_by: None,
                    var_names.event_log: None
                }
            ],
            var_names.notes: [
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=2),
                    var_names.display_name: 'Adam Louis',
                    var_names.notes: "This same alert happened last week. We should do what we did the last time."
                },
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=4),
                    var_names.display_name: "Jennifer Ballero",
                    var_names.notes: "The issue was actually somewhat different. We had to restart the server."
                }
            ],
            var_names.impacted_business_services: test_data_services.business_services_basic_list[0:2],
            var_names.subscribers: [item + [test_data_users.user_details[item[1]][var_names.profile_picture]]
                                    for item in test_data_users.users_list[2:8]],
            var_names.status_update: [
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=6),
                    var_names.display_name: "John Kaiser",
                    var_names.status_update: "The issue has been identified. Resolution should take another " +
                                             "5 minutes at max."
                },
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=4),
                    var_names.display_name: 'John Kaiser',
                    var_names.status_update: "We are aware of the business impact and are working towards fixing it. " +
                                             "We have 3 people on the job already."
                }
            ],
            var_names.conference_bridges: ['315-262-5399,,,,12456#', 'https://zoom.us'],
            var_names.synced_vendors: [
                {
                    var_names.synced_with: 'Jira Cloud',
                    var_names.vendor_id: 'JIRA123',
                    var_names.vendor_url: 'https://atlassian.com'
                },
                {
                    var_names.synced_with: 'Zendesk',
                    var_names.vendor_id: 'JIRA124',
                    var_names.vendor_url: 'https://atlassian.com'
                }
            ]
        }
    },
    incident_list[3][var_names.organization_instance_id]: {
        **dict((k, incident_list[3][k])
               for k in [var_names.instance_id, var_names.organization_instance_id, var_names.instance_timestamp,
                         var_names.next_alert_timestamp, var_names.resolved_on, var_names.status]),
        **{var_names.assignees: [item + [test_data_users.user_details[item[1]][var_names.profile_picture]]
                                 for item in incident_list[0][var_names.assignees]]},
        **{
            var_names.task: alerts_list[3],
            var_names.events: [
                {
                    var_names.event_type: 'DISPATCH',
                    var_names.event_timestamp: today,
                    var_names.event_by: None,
                    var_names.event_log: None
                }
            ],
            var_names.notes: [
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=2),
                    var_names.display_name: 'Adam Louis',
                    var_names.notes: "This same alert happened last week. We should do what we did the last time."
                },
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=4),
                    var_names.display_name: "Jennifer Ballero",
                    var_names.notes: "The issue was actually somewhat different. We had to restart the server."
                }
            ],
            var_names.impacted_business_services: test_data_services.business_services_basic_list[0:2],
            var_names.subscribers: [item + [test_data_users.user_details[item[1]][var_names.profile_picture]]
                                    for item in test_data_users.users_list[2:8]],
            var_names.status_update: [
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=6),
                    var_names.display_name: "John Kaiser",
                    var_names.status_update: "The issue has been identified. Resolution should take another " +
                                             "5 minutes at max."
                },
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=4),
                    var_names.display_name: 'John Kaiser',
                    var_names.status_update: "We are aware of the business impact and are working towards fixing it. " +
                                             "We have 3 people on the job already."
                }
            ],
            var_names.conference_bridges: ['315-262-5399,,,,12456#', 'https://zoom.us'],
            var_names.synced_vendors: [
                {
                    var_names.synced_with: 'Jira Cloud',
                    var_names.vendor_id: 'JIRA123',
                    var_names.vendor_url: 'https://atlassian.com'
                },
                {
                    var_names.synced_with: 'Zendesk',
                    var_names.vendor_id: 'JIRA124',
                    var_names.vendor_url: 'https://atlassian.com'
                }
            ]
        }
    },
    incident_list[5][var_names.organization_instance_id]: {
        **dict((k, incident_list[5][k])
               for k in [var_names.instance_id, var_names.organization_instance_id, var_names.instance_timestamp,
                         var_names.next_alert_timestamp, var_names.resolved_on, var_names.status,
                         var_names.task_title, var_names.urgency_level, var_names.services]),
        **{var_names.assignees: [item + [test_data_users.user_details[item[1]][var_names.profile_picture]]
                                 for item in incident_list[5][var_names.assignees]]},
        **{
            var_names.task: alerts_list[1],
            var_names.events: [
                {
                    var_names.event_type: 'DISPATCH',
                    var_names.event_timestamp: today,
                    var_names.event_by: None,
                    var_names.event_log: None
                }
            ],
            var_names.notes: [
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=2),
                    var_names.display_name: 'Adam Louis',
                    var_names.notes: "This same alert happened last week. We should do what we did the last time."
                },
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=4),
                    var_names.display_name: "Jennifer Ballero",
                    var_names.notes: "The issue was actually somewhat different. We had to restart the server."
                }
            ],
            var_names.impacted_business_services: test_data_services.business_services_basic_list[0:2],
            var_names.subscribers: [item + [test_data_users.user_details[item[1]][var_names.profile_picture]]
                                    for item in test_data_users.users_list[2:8]],
            var_names.status_update: [
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=6),
                    var_names.display_name: "John Kaiser",
                    var_names.status_update: "The issue has been identified. Resolution should take another " +
                                             "5 minutes at max."
                },
                {
                    var_names.timestamp: today + datetime.timedelta(minutes=4),
                    var_names.display_name: 'John Kaiser',
                    var_names.status_update: "We are aware of the business impact and are working towards fixing it. " +
                                             "We have 3 people on the job already."
                }
            ]
        }
    }
}


incident_specific_alerts = [
    {
        var_names.task_ref_id: test_tools.get_dummy_reference_id(),
        var_names.timestamp: incident_list[0][var_names.instance_timestamp],
        var_names.task_title: incident_list[0][var_names.task_title],
        var_names.urgency_level: incident_list[0][var_names.urgency_level],
        var_names.status: static_vars.triggered_state,
        var_names.instance_id: incident_list[0][var_names.instance_id],
        var_names.organization_instance_id: incident_list[0][var_names.organization_instance_id],
        var_names.resolved_on: incident_list[0][var_names.resolved_on],
        var_names.services: incident_list[0][var_names.services],
        var_names.integration_name: 'DataDog',
        var_names.text_msg: r'''Position monitor has failed... Traceback (most recent call last):
            File "C:\Users\riasat.ullah\AppData\Local\Programs\Python\Python35\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec)
            File "C:\Users\riasat.ullah\AppData\Local\Programs\Python\Python35\lib\runpy.py", line 85, in _run_code exec(code, run_globals)
            File "C:\Users\riasat.ullah\PycharmProjects\taskcallrest\jobs\instance_monitor.py", line 246, in time.sleep(wait_seconds)
            KeyboardInterrupt'''
    },
    {
        var_names.task_ref_id: test_tools.get_dummy_reference_id(),
        var_names.timestamp: incident_list[1][var_names.instance_timestamp],
        var_names.task_title: incident_list[1][var_names.task_title],
        var_names.urgency_level: incident_list[1][var_names.urgency_level],
        var_names.status: static_vars.grouped_state,
        var_names.instance_id: incident_list[0][var_names.instance_id],
        var_names.organization_instance_id: incident_list[0][var_names.organization_instance_id],
        var_names.resolved_on: incident_list[0][var_names.resolved_on],
        var_names.services: incident_list[1][var_names.services],
        var_names.integration_name: 'Service Now',
        var_names.text_msg: r'''Position monitor has failed... Traceback (most recent call last):
            File "C:\Users\riasat.ullah\AppData\Local\Programs\Python\Python35\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec)
            File "C:\Users\riasat.ullah\AppData\Local\Programs\Python\Python35\lib\runpy.py", line 85, in _run_code exec(code, run_globals)
            File "C:\Users\riasat.ullah\PycharmProjects\taskcallrest\jobs\instance_monitor.py", line 246, in time.sleep(wait_seconds)
            KeyboardInterrupt'''
    },
    {
        var_names.task_ref_id: test_tools.get_dummy_reference_id(),
        var_names.timestamp: incident_list[2][var_names.instance_timestamp],
        var_names.task_title: incident_list[2][var_names.task_title],
        var_names.urgency_level: incident_list[2][var_names.urgency_level],
        var_names.status: static_vars.suppressed_state,
        var_names.instance_id: incident_list[0][var_names.instance_id],
        var_names.organization_instance_id: incident_list[0][var_names.organization_instance_id],
        var_names.resolved_on: incident_list[0][var_names.resolved_on],
        var_names.services: incident_list[2][var_names.services],
        var_names.integration_name: None,
        var_names.text_msg: r'''Position monitor has failed... Traceback (most recent call last):
            File "C:\Users\riasat.ullah\AppData\Local\Programs\Python\Python35\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec)
            File "C:\Users\riasat.ullah\AppData\Local\Programs\Python\Python35\lib\runpy.py", line 85, in _run_code exec(code, run_globals)
            File "C:\Users\riasat.ullah\PycharmProjects\taskcallrest\jobs\instance_monitor.py", line 246, in time.sleep(wait_seconds)
            KeyboardInterrupt'''
    }
]


task_alerts = [
    {
        var_names.task_ref_id: test_tools.get_dummy_reference_id(),
        var_names.timestamp: incident_list[0][var_names.instance_timestamp],
        var_names.task_title: incident_list[0][var_names.task_title],
        var_names.urgency_level: incident_list[0][var_names.urgency_level],
        var_names.status: static_vars.triggered_state,
        var_names.instance_id: incident_list[0][var_names.instance_id],
        var_names.organization_instance_id: incident_list[0][var_names.organization_instance_id],
        var_names.resolved_on: incident_list[0][var_names.resolved_on],
        var_names.services: incident_list[0][var_names.services],
        var_names.integration_name: 'DataDog'
    },
    {
        var_names.task_ref_id: test_tools.get_dummy_reference_id(),
        var_names.timestamp: incident_list[1][var_names.instance_timestamp],
        var_names.task_title: incident_list[1][var_names.task_title],
        var_names.urgency_level: incident_list[1][var_names.urgency_level],
        var_names.status: static_vars.grouped_state,
        var_names.instance_id: incident_list[0][var_names.instance_id],
        var_names.organization_instance_id: incident_list[0][var_names.organization_instance_id],
        var_names.resolved_on: incident_list[0][var_names.resolved_on],
        var_names.services: incident_list[1][var_names.services],
        var_names.integration_name: 'Service Now'
    },
    {
        var_names.task_ref_id: test_tools.get_dummy_reference_id(),
        var_names.timestamp: incident_list[2][var_names.instance_timestamp],
        var_names.task_title: incident_list[2][var_names.task_title],
        var_names.urgency_level: incident_list[2][var_names.urgency_level],
        var_names.status: static_vars.suppressed_state,
        var_names.instance_id: None,
        var_names.organization_instance_id: None,
        var_names.resolved_on: None,
        var_names.services: incident_list[2][var_names.services],
        var_names.integration_name: None
    },
    {
        var_names.task_ref_id: test_tools.get_dummy_reference_id(),
        var_names.timestamp: incident_list[3][var_names.instance_timestamp],
        var_names.task_title: incident_list[3][var_names.task_title],
        var_names.urgency_level: incident_list[3][var_names.urgency_level],
        var_names.status: static_vars.suppressed_state,
        var_names.instance_id: None,
        var_names.organization_instance_id: None,
        var_names.resolved_on: None,
        var_names.services: incident_list[3][var_names.services],
        var_names.integration_name: 'DataDog'
    },
    {
        var_names.task_ref_id: test_tools.get_dummy_reference_id(),
        var_names.timestamp: today,
        var_names.status: static_vars.triggered_state,
        var_names.task_title: 'Position Monitor Failed - Urgent Check Needed',
        var_names.instance_id: incident_list[4][var_names.instance_id],
        var_names.organization_instance_id: incident_list[4][var_names.organization_instance_id],
        var_names.resolved_on: incident_list[4][var_names.resolved_on],
        var_names.services: incident_list[4][var_names.services],
        var_names.urgency_level: static_vars.high_urgency,
        var_names.integration_name: 'DataDog'
    },
    {
        var_names.task_ref_id: test_tools.get_dummy_reference_id(),
        var_names.timestamp: today,
        var_names.status: static_vars.suppressed_state,
        var_names.task_title: 'Security master could not be generated. Multiple entries found for ticker - AAPL',
        var_names.instance_id: None,
        var_names.organization_instance_id: None,
        var_names.resolved_on: None,
        var_names.services: incident_list[2][var_names.services],
        var_names.urgency_level: static_vars.low_urgency,
        var_names.integration_name: None
    },
    {
        var_names.task_ref_id: test_tools.get_dummy_reference_id(),
        var_names.timestamp: today,
        var_names.status: static_vars.suppressed_state,
        var_names.task_title: 'Authentication Error',
        var_names.instance_id: None,
        var_names.organization_instance_id: None,
        var_names.resolved_on: None,
        var_names.services: incident_list[2][var_names.services],
        var_names.urgency_level: static_vars.medium_urgency,
        var_names.integration_name: 'Amazon Cloud Watch'
    }
]


pre_scheduled_alerts = [
    {
        var_names.task_ref_id: test_tools.get_dummy_reference_id(),
        var_names.start_date: datetime.date(2019, 4, 20),
        var_names.urgency_level: static_vars.low_urgency,
        var_names.repeat: [2],
        var_names.created_by: test_data_users.users_list[0],
        var_names.task_timezone: "Europe/Madrid",
        var_names.text_msg: "Hedge at the end of morning session with Nikkei mini futures",
        var_names.task_title: "Hedge JP Morning Session",
        var_names.task_time: '21:45',
        var_names.services: test_data_services.services_basic_list[0],
        var_names.assignee_policies: test_data_policies.policies_basic_list[0:2]
    },
    {
        var_names.task_ref_id: test_tools.get_dummy_reference_id(),
        var_names.start_date: datetime.date(2019, 4, 27),
        var_names.urgency_level: static_vars.high_urgency,
        var_names.repeat: [0, 1, 2],
        var_names.created_by: test_data_users.users_list[1],
        var_names.task_timezone: "US/Eastern",
        var_names.text_msg: "Hedge at EOD with SGX index futures",
        var_names.task_title: "Hedge Singapore book at EOD",
        var_names.task_time: '05:34',
        var_names.services: test_data_services.services_basic_list[0],
        var_names.assignee_policies: None
    }
]


past_incidents = {var_names.mean_resolution_time: 20.82,
                  var_names.total_incident_count: 583,
                  var_names.week_incident_count: 13,
                  var_names.incidents: dict()}
for i in range(0, 180):
    ts = datetime.datetime(2020, 5, 14, 12, 4, 31) - datetime.timedelta(days=i)
    td = ts.date().strftime('%Y-%m-%d')

    td_show = True if random.randint(1, 10) > 7 else False
    if td_show:
        td_show_count = random.randint(1, 20)
        td_show_list = []
        for j in range(0, td_show_count):
            td_show_list.append({
                var_names.instance_id: 32,
                var_names.organization_instance_id: 12,
                var_names.instance_timestamp: ts,
                var_names.resolution_time: random.randint(2, 35),
                var_names.task_title: 'Position Monitor Failed - Urgent Check Needed',
                var_names.resolved_by: 'Adam Bergman',
                var_names.urgency_level: static_vars.high_urgency,
                var_names.similarity_score: round(random.randint(60, 100)/100, 2)
            })
        past_incidents[var_names.incidents][td] = td_show_list


similar_ongoing_incidents = {
    var_names.total_incident_count: 3,
    var_names.assignees: test_data_users.users_list[4:6],
    var_names.services: [test_data_services.services_basic_list[0],
                         test_data_services.services_basic_list[1]],
    var_names.impacted_business_services: test_data_services.business_services_basic_list[0:2],
    var_names.incidents: [incident_details[incident_list[_][var_names.organization_instance_id]] for _ in range(1, 4)]
}
