# By: Riasat Ullah
# This file contains functions that set up and manage the onboarding process.

from constants import label_names as lbl, tutorial_names as tn, var_names


def create_owner_onboarding_to_do(answers):
    '''
    Prepare the onboarding list for the owner of the organization based on the answers
    provided in the welcome process.
    :param answers: (list) of answer codes
    :return: (list of dict) of onbaording items to put on the to-do list
    '''
    to_do_list = [
        {var_names.name: tn.user_add,
         var_names.title: lbl.tro_add_users,
         var_names.link: ''},
        {var_names.name: tn.routine_basic,
         var_names.title: lbl.tro_create_team_routine,
         var_names.link: ''},
        {var_names.name: tn.escalation_policy_basic,
         var_names.title: lbl.tro_set_up_escalation,
         var_names.link: ''},
        {var_names.name: tn.service_basic,
         var_names.title: lbl.tro_create_services,
         var_names.link: ''},
        {var_names.name: tn.incident_handling,
         var_names.title: lbl.tro_incident_handling,
         var_names.link: ''},
        {var_names.name: tn.mobile_app_download,
         var_names.title: lbl.tro_download_mobile_app,
         var_names.link: ''},
        {var_names.name: tn.content_based_delegation,
         var_names.title: lbl.tro_set_up_content_based_incident_handling,
         var_names.link: ''},
        {var_names.name: tn.service_chat,
         var_names.title: lbl.tro_connect_your_chat,
         var_names.link: ''}
    ]

    if 'A11' in answers or 'A21' in answers:
        to_do_list.append({
            var_names.name: tn.service_monitoring_tools,
            var_names.title: lbl.tro_connect_monitoring_tools,
            var_names.link: ''
        })

    if 'A49' in answers:
        to_do_list.append({
            var_names.name: tn.service_system_dependencies,
            var_names.title: lbl.tro_map_system_dependencies,
            var_names.link: ''
        })

    if 'A46' in answers:
        to_do_list.append({
            var_names.name: tn.alert_suppression,
            var_names.title: lbl.tro_suppress_unwanted_alerts,
            var_names.link: ''
        })
    if 'A33' in answers or 'A411' in answers:
        to_do_list.append({
            var_names.name: tn.service_customer_support,
            var_names.title: lbl.tro_connect_customer_support,
            var_names.link: ''
        })
    if 'A34' in answers or 'A412' in answers:
        to_do_list.append({
            var_names.name: tn.live_call_routing,
            var_names.title: lbl.tro_set_up_live_call_routing,
            var_names.link: ''
        })
    if 'A31' in answers or 'A45' in answers:
        to_do_list.append({
            var_names.name: tn.notifications_customize,
            var_names.description: lbl.tro_customize_notifications,
            var_names.link: ''
        })
    if 'A410' in answers:
        to_do_list.append({
            var_names.name: tn.status_update_supervisors,
            var_names.title: lbl.tro_keep_supervisors_informed,
            var_names.link: ''
        })
    if 'A47' in answers or 'A49' in answers:
        to_do_list.append({
            var_names.name: tn.incident_analytics,
            var_names.title: lbl.tro_analyze_incident_response,
            var_names.link: ''
        })
    if 'A48' in answers:
        to_do_list.append({
            var_names.name: tn.user_analytics,
            var_names.title: lbl.tro_evaluate_team_stress_level,
            var_names.link: ''
        })

    return to_do_list


def create_regular_user_onboarding_to_do():
    '''
    Set up the onboarding to-do list for users who are not the owner.
    :return: (list of dict) of onbaording items to put on the to-do list
    '''
    to_do_list = [
        {var_names.name: tn.on_call_scheduling,
         var_names.title: lbl.tro_scheduling_process,
         var_names.link: ''},
        {var_names.name: tn.service_basic,
         var_names.title: lbl.tro_create_services,
         var_names.link: ''},
        {var_names.name: tn.incident_handling,
         var_names.title: lbl.tro_incident_handling,
         var_names.link: ''},
        {var_names.name: tn.mobile_app_download,
         var_names.title: lbl.tro_download_mobile_app,
         var_names.link: ''},
        {var_names.name: tn.service_chat,
         var_names.title: lbl.tro_connect_your_chat,
         var_names.link: ''}
    ]
    return to_do_list
