# By: Riasat Ullah
# This file contains all constants related to the ManageEngine ServiceDesk Plus integration.

from utils import constants
import json


# ServiceDesk Plus variables
var_description = 'description'
var_id = 'id'
var_name = 'name'
var_priority = 'priority'
var_status = 'status'
var_subject = 'subject'

# ServiceDesk Plus priority
sdp_priority_mapping = {
    'Critical': constants.critical_urgency,
    'High': constants.high_urgency,
    'Medium': constants.medium_urgency,
    'Normal': constants.medium_urgency,
    'Low': constants.low_urgency
}

# ServiceDesk Plus status
sdp_status_mapping = {
    'Open': constants.open_state,
    'In Progress': constants.acknowledged_state,
    'Closed': constants.resolved_state,
    'Resolved': constants.resolved_state
}


def get_field_value(field, payload):
    '''
    Get the value of a field from the alert payload sent by ServiceDesk Plus.
    :param field: the field to check for
    :param payload: alert payload
    :return: payload field value
    '''
    if field in payload:
        if field in payload:
            if field in [var_priority, var_status]:
                try:
                    return json.loads(payload[field])[var_name]
                except Exception:
                    return None
            return payload[field]
    return None
