Beispiel #1
0
        // Get the CWSS_API_Siebel_Service_User ID
        public void getSiebelServiceUserId(IGlobalContext _gContext)
        {
            string query = "select Account.ID from Account where Login='******'";

            String[] rowData = null;
            try
            {
                rowData = rnSrv.queryData(query);
            }
            catch (Exception ex)
            {
                String message = "Error in query default Siebel user id from Cloud Service. Please contact the administrator.";
                if (logWrap != null)
                {
                    string logMessage = "Error in query default Siebel user id from Cloud Service. ";
                    string logNote    = "Error query: " + query + "; Error message: " + ex.Message;
                    logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);
                }
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                return;
            }

            // Check whether account CWSS_API_Siebel_Service_User is set in Staff
            if (rowData.Length == 0)
            {
                cwssApiSiebelServiceUserId = 0;
                return;
            }
            string jsonString = rowData[0];

            cwssApiSiebelServiceUserId = Convert.ToInt32(jsonString);
        }
Beispiel #2
0
        //Retrieve configuration verb via RNow SOAP and Parse it as JSON
        public static bool getConfigVerb(IGlobalContext _gContext)
        {
            //Init the RightNow Service
            rnSrv  = new RightNowService(_gContext);
            client = rnSrv._rnowClient;
            string logMessage, logNote;

            //Query configuration from Cloud Service
            String query = "select Configuration.Value from Configuration where lookupname='CUSTOM_CFG_Accel_Ext_Integrations'";

            String[] rowData = null;
            try
            {
                rowData = rnSrv.queryData(query);
            }
            catch (Exception ex)
            {
                if (logWrap != null)
                {
                    logMessage = "Integration Configuration verb is not set properly. ";
                    logNote    = "Error in query config 'CUSTOM_CFG_Accel_Ext_Integrations' from Cloud Service. Error query: " + query + "; Error Message: " + ex.Message;
                    logWrap.ErrorLog();
                }
                MessageBox.Show("Integration Configuration verb is not set properly. Please contact your system administrator. ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            // Check whether configuration is set
            if (rowData.Length == 0)
            {
                String message = "Integration Configuration verb does not exist. Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if (logWrap != null)
                {
                    logMessage = "Integration Configuration verb does not exist.";
                    logNote    = "CUSTOM_CFG_Accel_Ext_Integrations is missing in Configuration Settings.";
                    logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);
                }
                return(false);
            }

            // Get configuration value
            string jsonString = rowData[0];

            jsonString = jsonString.Replace("\"\"", "\"");

            // get the AdminProfileID
            // make sure it is located before "hosts" (if this is also missing, well, the config
            // verb is in bad shape.
            // can't use "{"AdminProfileID" because { can be followed by newline in config verb
            if (jsonString.Contains("AdminProfileID") &&
                jsonString.Contains("hosts") &&
                jsonString.IndexOf("AdminProfileID") < jsonString.IndexOf("hosts"))
            {
                // get the AdminProfileID value
                AdminProfileID = Convert.ToInt32(jsonString.Split(',')[0].Split(':')[1]);
            }
            else
            {
                String message = "Integration Configuration verb does not contain AdminProfileID as first member of JSON.\n Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if (logWrap != null)
                {
                    logMessage = "Integration Configuration verb does not contain AdminProfileID as first member of JSON";
                    logNote    = "The string is: " + jsonString;
                    logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);
                }

                AdminProfileID = 0;
                return(false);
            }

            loginUserIsAdmin = _gContext.ProfileId == ConfigurationSetting.AdminProfileID;
            // Parse endpoint configuration
            int i = jsonString.IndexOf("[");
            int j = jsonString.LastIndexOf("]");

            if (i < 0 || i > j)
            {
                String message = "Siebel Integration Configuration verb is not set properly. Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if (logWrap != null)
                {
                    logMessage = "Accelerator Integration Configuration verb [] array is not set properly.";
                    logNote    = "Configuration cannot be parsed, the string is: " + jsonString;
                    logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);
                }
                return(false);
            }
            string jsonTrim = jsonString.Substring(i, j - i + 1);

            /*  Using Serializer to parse Configuration JSON String
             *  The parsing is based on the classes definition in the following region
             */
            var serializer = new JavaScriptSerializer();
            List <ConfigurationVerb> configVerbArray = null;

            try
            {
                configVerbArray = serializer.Deserialize <List <ConfigurationVerb> >(jsonTrim);
            }
            catch (System.ArgumentException ex)
            {
                String message = "Accelerator Integration Configuration verb JSON is invalid. Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                logMessage = "Accelerator Integration Configuration verb JSON is invalid.";
                logNote    = "Configuration cannot be parsed, the string is: " + jsonString;
                logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);

                return(false);
            }
            bool found = false;

            // Get the server url of current site
            string _interfaceUrl = _gContext.InterfaceURL;

            string[] splittedInterfaceUrl = _interfaceUrl.Split('/');
            string   _configServerUrl     = splittedInterfaceUrl[2];

            // Get values in configuration settings
            foreach (ConfigurationVerb configVerb in configVerbArray)
            {
                if (configVerb.rnt_host.Contains(_configServerUrl))
                {
                    string extBaseUrl = configVerb.integration.ext_base_url;

                    //Get Siebel server type and initiate Siebel Provider
                    string serverType = configVerb.integration.server_type;
                    SiebelProvider = serverTypeToProvider(serverType);

                    username               = configVerb.integration.username;
                    password               = configVerb.integration.password;
                    siebelServiceUserId    = configVerb.integration.siebel_service_user_id;
                    siebelDefaultSrOwnerId = configVerb.integration.siebel_default_sr_owner_id;
                    SiebelServiceTimeout   = configVerb.integration.SiebelServiceTimeout;
                    log_level              = configVerb.integration.log_level;
                    assignLogLevelEnum();
                    rnt_host = configVerb.rnt_host;
                    //Prepare the Service Request Type Mapping
                    if (configVerb.integration.request_type_mapping != null)
                    {
                        requestTypeMapping = setRequestTypeMapping(configVerb.integration.request_type_mapping);
                    }

                    incidentsByContactReportID = configVerb.integration.incidentsByContactReportID;
                    contactSearchReportID      = configVerb.integration.contactSearchReportID;

                    uspsUsername             = configVerb.postalValidation.username;
                    ext_address_validate_url = configVerb.postalValidation.ext_address_validate_url;

                    Dictionary <String, Service> extServices = configVerb.integration.ext_services;
                    foreach (KeyValuePair <String, Service> extService in extServices)
                    {
                        switch (extService.Key)
                        {
                        case "service_request_detail":
                            if (extService.Value.create != null)
                            {
                                CreateSR_WSDL = extBaseUrl + extService.Value.create.relative_path;
                            }
                            if (extService.Value.update != null)
                            {
                                UpdateSR_WSDL = extBaseUrl + extService.Value.update.relative_path;
                            }
                            if (extService.Value.read != null)
                            {
                                LookupSR_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;

                        case "service_request_list":
                            if (extService.Value.read != null)
                            {
                                LookupSRbyContactPartyID_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;

                        case "repair_order_detail":
                            if (extService.Value.create != null)
                            {
                                CreateRepair_WSDL = extBaseUrl + extService.Value.create.relative_path;
                            }
                            if (extService.Value.update != null)
                            {
                                UpdateRepair_WSDL = extBaseUrl + extService.Value.update.relative_path;
                            }
                            if (extService.Value.read != null)
                            {
                                LookupRepair_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;

                        case "repair_order_list":
                            if (extService.Value.read != null)
                            {
                                RepairOrderList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;

                        case "service_request_note":
                            if (extService.Value.create != null)
                            {
                                CreateInteraction_WSDL = extBaseUrl + extService.Value.create.relative_path;
                            }
                            break;

                        case "contact_list":
                            if (extService.Value.read != null)
                            {
                                LookupContactList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;

                        case "item_list":
                            if (extService.Value.read != null)
                            {
                                ItemList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;

                        case "entitlement_list":
                            if (extService.Value.read != null)
                            {
                                EntitlementList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;

                        case "repair_logistics_list":
                            if (extService.Value.read != null)
                            {
                                RepairLogisticsList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;

                        case "repair_list":
                            if (extService.Value.read != null)
                            {
                                RepairOrderList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;
                        }
                    }
                    found = true;
                    break;
                }
            }

            // If current site is not set in configuration.
            if (!found)
            {
                String message = "The current host, " + _configServerUrl + ", is not present in Integration Configuration verb.\n Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if (logWrap != null)
                {
                    logMessage = "Current Host is not present in Integration Configuration verb. ";
                    logNote    = "Current site is not set in configuration CUSTOM_CFG_Accel_Ext_Integrations. The configuration verb is: " + jsonString;
                    logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);
                }
                return(false);
            }

            configVerbPerfect = true;
            return(true);
        }
        //Retrieve configuration verb via RNow SOAP and Parse it as JSON
        public static bool getConfigVerb(IGlobalContext _gContext)
        {
            //Init the RightNow Service
            rnSrv = new RightNowService(_gContext);
            client = rnSrv._rnowClient;
            string logMessage, logNote;

            //Query configuration from Cloud Service
            String query = "select Configuration.Value from Configuration where lookupname='CUSTOM_CFG_Accel_Ext_Integrations'";
            String[] rowData = null;
            try
            {
                rowData = rnSrv.queryData(query);
            }
            catch (Exception ex)
            {
                if (logWrap != null)
                {
                    logMessage = "Integration Configuration verb is not set properly. ";
                    logNote = "Error in query config 'CUSTOM_CFG_Accel_Ext_Integrations' from Cloud Service. Error query: " + query + "; Error Message: " + ex.Message;
                    logWrap.ErrorLog();
                }
                MessageBox.Show("Integration Configuration verb is not set properly. Please contact your system administrator. ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }

            // Check whether configuration is set
            if (rowData.Length == 0)
            {
                String message = "Integration Configuration verb does not exist. Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if (logWrap != null)
                {
                    logMessage = "Integration Configuration verb does not exist.";
                    logNote = "CUSTOM_CFG_Accel_Ext_Integrations is missing in Configuration Settings.";
                    logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);
                }
                return false;
            }
            
            // Get configuration value
            string jsonString = rowData[0];
            jsonString = jsonString.Replace("\"\"", "\"");
           
            // get the AdminProfileID
            // make sure it is located before "hosts" (if this is also missing, well, the config
            // verb is in bad shape.
            // can't use "{"AdminProfileID" because { can be followed by newline in config verb       
            if (jsonString.Contains("AdminProfileID") && 
                jsonString.Contains("hosts") &&
                jsonString.IndexOf("AdminProfileID") < jsonString.IndexOf("hosts"))
            {              
                // get the AdminProfileID value
                AdminProfileID = Convert.ToInt32(jsonString.Split(',')[0].Split(':')[1]);
            }
            else
            {
                String message = "Integration Configuration verb does not contain AdminProfileID as first member of JSON.\n Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if (logWrap != null)
                {
                    logMessage = "Integration Configuration verb does not contain AdminProfileID as first member of JSON";
                    logNote = "The string is: " + jsonString;
                    logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);
                }

                AdminProfileID = 0;
                return false;
                
            }

            loginUserIsAdmin = _gContext.ProfileId == ConfigurationSetting.AdminProfileID;
            // Parse endpoint configuration
            int i = jsonString.IndexOf("[");
            int j = jsonString.LastIndexOf("]");  
            if (i < 0 || i > j)
            {
                String message = "Siebel Integration Configuration verb is not set properly. Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if (logWrap != null)
                {
                    logMessage = "Accelerator Integration Configuration verb [] array is not set properly.";
                    logNote = "Configuration cannot be parsed, the string is: " + jsonString;
                    logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);
                }
                return false;
            }
            string jsonTrim = jsonString.Substring(i, j - i + 1);
            
            /*  Using Serializer to parse Configuration JSON String  
             *  The parsing is based on the classes definition in the following region
             */
            var serializer = new JavaScriptSerializer();
            List<ConfigurationVerb> configVerbArray = null;
            try
            {
                configVerbArray = serializer.Deserialize<List<ConfigurationVerb>>(jsonTrim);
            }
            catch (System.ArgumentException ex)
            {
                String message = "Accelerator Integration Configuration verb JSON is invalid. Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                logMessage = "Accelerator Integration Configuration verb JSON is invalid.";
                logNote = "Configuration cannot be parsed, the string is: " + jsonString;
                logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);

                return false;
            }
            bool found = false;

            // Get the server url of current site
            string _interfaceUrl = _gContext.InterfaceURL;
            string[] splittedInterfaceUrl = _interfaceUrl.Split('/');
            string _configServerUrl = splittedInterfaceUrl[2];

            // Get values in configuration settings
            foreach (ConfigurationVerb configVerb in configVerbArray)
            {
                if (configVerb.rnt_host.Contains(_configServerUrl))
                {
                    string extBaseUrl = configVerb.integration.ext_base_url;
                    
                    //Get Siebel server type and initiate Siebel Provider
                    string serverType = configVerb.integration.server_type;
                    SiebelProvider = serverTypeToProvider(serverType);

                    username = configVerb.integration.username;
                    password = configVerb.integration.password;
                    siebelServiceUserId = configVerb.integration.siebel_service_user_id;
                    siebelDefaultSrOwnerId = configVerb.integration.siebel_default_sr_owner_id;
                    SiebelServiceTimeout = configVerb.integration.SiebelServiceTimeout;
                    log_level = configVerb.integration.log_level;
                    assignLogLevelEnum();
                    rnt_host = configVerb.rnt_host;
                    //Prepare the Service Request Type Mapping
                    if (configVerb.integration.request_type_mapping != null)
                    {
                        requestTypeMapping = setRequestTypeMapping(configVerb.integration.request_type_mapping);
                    }

                    incidentsByContactReportID = configVerb.integration.incidentsByContactReportID;
                    contactSearchReportID = configVerb.integration.contactSearchReportID;

                    uspsUsername = configVerb.postalValidation.username;
                    ext_address_validate_url = configVerb.postalValidation.ext_address_validate_url;

                    Dictionary<String, Service> extServices = configVerb.integration.ext_services;
                    foreach (KeyValuePair<String, Service> extService in extServices)
                    {
                        switch (extService.Key)
                        {
                            case "service_request_detail":
                                if (extService.Value.create != null)
                                    CreateSR_WSDL = extBaseUrl + extService.Value.create.relative_path;
                                if (extService.Value.update != null)
                                    UpdateSR_WSDL = extBaseUrl + extService.Value.update.relative_path;
                                if (extService.Value.read != null)
                                    LookupSR_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                            case "service_request_list":
                                if (extService.Value.read != null)
                                    LookupSRbyContactPartyID_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                            case "repair_order_detail":
                                if (extService.Value.create != null)
                                    CreateRepair_WSDL = extBaseUrl + extService.Value.create.relative_path;
                                if (extService.Value.update != null)
                                    UpdateRepair_WSDL = extBaseUrl + extService.Value.update.relative_path;
                                if (extService.Value.read != null)
                                    LookupRepair_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                            case "repair_order_list":
                                if (extService.Value.read != null)
                                    RepairOrderList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                            case "service_request_note":
                                if (extService.Value.create != null)
                                    CreateInteraction_WSDL = extBaseUrl + extService.Value.create.relative_path;
                                break;
                            case "contact_list":
                                if (extService.Value.read != null)
                                    LookupContactList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                            case "item_list":
                                if (extService.Value.read != null)
                                    ItemList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                            case "entitlement_list":
                                if (extService.Value.read != null)
                                    EntitlementList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                            case "repair_logistics_list":
                                if (extService.Value.read != null)
                                    RepairLogisticsList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                            case "repair_list":
                                if (extService.Value.read != null)
                                    RepairOrderList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                        }
                    }
                    found = true; 
                    break;
                }
            }
            
            // If current site is not set in configuration.
            if (!found)
            {
                String message =  "The current host, " + _configServerUrl + ", is not present in Integration Configuration verb.\n Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if (logWrap != null)
                {
                    logMessage = "Current Host is not present in Integration Configuration verb. ";
                    logNote = "Current site is not set in configuration CUSTOM_CFG_Accel_Ext_Integrations. The configuration verb is: " + jsonString;
                    logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);
                }
                return false;
            }

            configVerbPerfect = true;
            return true;
        }