public static DynamicParam GetParam(this Array array)
        {
            DynamicParam dynamicParam = null;

            if (array != null && array.Length > 0)
            {
                dynamicParam = new DynamicParam();
                dynamic       paramValue  = new System.Dynamic.ExpandoObject();
                StringBuilder paramNameSB = new StringBuilder();
                for (int i = 0; i < array.Length; i++)
                {
                    string currStr = $"UUID{i}";
                    paramNameSB.Append($":{currStr}");
                    if (i < (array.Length - 1))
                    {
                        paramNameSB.Append(",");
                    }
                    ((IDictionary <string, object>)paramValue).Add(currStr, array.GetValue(i));
                }
                dynamicParam.ParamName = paramNameSB.ToString();
                dynamicParam.ParmValue = paramValue;
            }

            return(dynamicParam);
        }
 public static void AddParam(this DynamicParam dynamicParam, string paramName, object paramValue)
 {
     ((IDictionary <string, object>)dynamicParam.ParmValue).Add(paramName, paramValue);
 }
Example #3
0
    private int Step1CheckLogic(string tempUnzippedPath, ShippingProvider provider)
    {
        if (CheckFormanifestFile(tempUnzippedPath, provider) != "")
        {
            var doc = new XmlDocument();
            doc.Load(tempUnzippedPath + '\\' + provider.ManifestFile);
            XmlElement root = doc.DocumentElement;
            if (CheckValidManifestFile(root))
            {
                XmlNodeList xnList3 = doc.SelectNodes("sageframe/folders/folder/files/file");
                if (xnList3.Count != 0)
                {
                    var dlls = new ArrayList();
                    foreach (XmlNode xn3 in xnList3)
                    {
                        string fileName = xn3["name"].InnerXml;
                        try
                        {
                            #region CheckValidDataSqlProvider

                            if (!String.IsNullOrEmpty(fileName) &&
                                fileName.Contains("1.00.00.SqlDataProvider"))
                            {
                                provider.InstallScript = fileName;
                            }

                            #endregion

                            #region CheckAlldllFiles

                            if (!String.IsNullOrEmpty(fileName) && fileName.Contains(".dll"))
                            {
                                dlls.Add(fileName);
                                _provider.DllFiles = dlls;
                            }

                            #endregion

                            #region ReadUninstall SQL FileName

                            if (!String.IsNullOrEmpty(fileName) && fileName.Contains("Uninstall.SqlDataProvider"))
                            {
                                provider.UninstallScript = fileName;
                            }

                            #endregion
                        }
                        catch (Exception ex)
                        {
                            break;
                        }
                    }
                }
                XmlNodeList xnList = doc.SelectNodes("sageframe/folders/folder");
                foreach (XmlNode xn in xnList)
                {
                    provider.ShippingProviderName        = xn["providername"].InnerXml;
                    provider.ShippingProviderAliasHelp   = xn["provideraliashelp"].InnerXml;
                    provider.ShippingProviderServiceCode = xn["servicecode"].InnerXml;
                    provider.AssemblyName = xn["assemblyname"].InnerXml;
                    provider.ShippingProviderNamespace = xn["namespace"].InnerXml;
                    provider.ShippingProviderClass     = xn["class"].InnerXml;
                    provider.ModuleFolder = "Modules/" + xn["foldername"].InnerXml;
                    provider.IsActive     = true;


                    if (IsProviderExist(provider.ShippingProviderName, _storeId, _portalId))
                    {
                        XmlNodeList settingCtl = doc.SelectNodes("sageframe/folders/folder/modules/module/controls/control");
                        foreach (XmlNode xn5 in settingCtl)
                        {
                            if (xn5["name"].InnerXml.ToLower().Trim() == "setting")
                            {
                                provider.SettingControlPath = xn5["src"].InnerXml;
                            }
                            if (xn5["name"].InnerXml.ToLower().Trim() == "label")
                            {
                                provider.LabelControlPath = xn5["src"].InnerXml;
                            }
                            if (xn5["name"].InnerXml.ToLower().Trim() == "track")
                            {
                                provider.TrackControlPath = xn5["src"].InnerXml;
                            }
                        }
                        XmlNodeList xnList2 = doc.SelectNodes("sageframe/folders/folder/settings/setting");

                        foreach (XmlNode xn2 in xnList2)
                        {
                            string settingkey   = xn2["key"].InnerXml;
                            string settingvalue = xn2["value"].InnerXml;
                            _providerSetting.Add(new KeyValuePair <string, string>(settingkey, settingvalue));
                        }
                        provider.Settings = _providerSetting;

                        XmlNodeList methods = doc.SelectNodes("sageframe/folders/folder/dynamicmethods/method");
                        foreach (XmlNode method in methods)
                        {
                            var dymethod = new DynamicMethod();
                            dymethod.MethodName = method["name"].InnerXml;
                            dymethod.MethodType = method.Attributes["type"].Value;
                            var         parlist    = new List <DynamicParam>();
                            XmlNodeList parameters = method.SelectNodes("params/param");
                            if (parameters != null)
                            {
                                int parCount = 0;
                                foreach (XmlNode param in parameters)
                                {
                                    var pars = new DynamicParam();
                                    parCount++;
                                    pars.ParameterName  = param.Attributes["type"].Value;
                                    pars.ParameterType  = param.Attributes["objectType"].Value;
                                    pars.ParameterOrder = int.Parse(param.Attributes["order"].Value);
                                    parlist.Add(pars);
                                }
                                dymethod.DynamicParams = parlist;
                            }
                            _dynamicMethods.Add(dymethod);
                        }
                        provider.DynamicMethods          = _dynamicMethods;
                        _provider.SettingControlTempPath = ResolveUrl(this.AppRelativeTemplateSourceDirectory) +
                                                           "temp\\extracted\\" +
                                                           _provider.SettingControlPath.Split('/').Last();
                        _provider.SettingControlTempPath = Regex.Replace(_provider.SettingControlTempPath, @"(\\)", @"//");
                        return(1);//Already exist
                    }
                    else
                    {
                        XmlNodeList settingCtl = doc.SelectNodes("sageframe/folders/folder/modules/module/controls/control");
                        foreach (XmlNode xn5 in settingCtl)
                        {
                            if (xn5["name"].InnerXml.ToLower().Trim() == "setting")
                            {
                                provider.SettingControlPath = xn5["src"].InnerXml;
                            }
                            if (xn5["name"].InnerXml.ToLower().Trim() == "label")
                            {
                                provider.LabelControlPath = xn5["src"].InnerXml;
                            }
                            if (xn5["name"].InnerXml.ToLower().Trim() == "track")
                            {
                                provider.TrackControlPath = xn5["src"].InnerXml;
                            }
                        }
                        XmlNodeList xnList2 = doc.SelectNodes("sageframe/folders/folder/settings/setting");

                        foreach (XmlNode xn2 in xnList2)
                        {
                            string settingkey   = xn2["key"].InnerXml;
                            string settingvalue = xn2["value"].InnerXml;
                            _providerSetting.Add(new KeyValuePair <string, string>(settingkey, settingvalue));
                        }
                        provider.Settings = _providerSetting;
                        XmlNodeList methods = doc.SelectNodes("sageframe/folders/folder/dynamicmethods/method");
                        foreach (XmlNode method in methods)
                        {
                            var dymethod = new DynamicMethod();
                            dymethod.MethodName = method["name"].InnerXml;

                            XmlNodeList parameters = method.SelectNodes("params/param");
                            if (parameters != null)
                            {
                                var listParam = new List <DynamicParam>();
                                int parCount  = 0;
                                foreach (XmlNode param in parameters)
                                {
                                    var pars = new DynamicParam();
                                    parCount++;
                                    pars.ParameterName  = param.Attributes["type"].Value;
                                    pars.ParameterType  = param.Attributes["objectType"].Value;
                                    pars.ParameterOrder = int.Parse(param.Attributes["order"].Value);
                                    listParam.Add(pars);
                                }
                                dymethod.DynamicParams = listParam;
                            }
                            _dynamicMethods.Add(dymethod);
                        }
                        provider.DynamicMethods          = _dynamicMethods;
                        _provider.SettingControlTempPath = ResolveUrl(this.AppRelativeTemplateSourceDirectory) +
                                                           "temp\\extracted\\" +
                                                           _provider.SettingControlPath.Split('/').Last();
                        _provider.SettingControlTempPath = Regex.Replace(_provider.SettingControlTempPath, @"(\\)", @"//");

                        return(2);//Not Exists
                    }
                }
            }
            else
            {
                return(-1);//Invalid Manifest file
            }
        }
        return(0);//No manifest file
    }