コード例 #1
0
        public void Update(NBrightInfo info)
        {
            // build list of xpath fields that need processing.
            var updatefields = new List <String>();
            var fieldList    = NBrightBuyUtils.GetAllFieldxPaths(info);

            foreach (var xpath in fieldList)
            {
                if (info.GetXmlProperty(xpath + "/@update") == "lang")
                {
                    updatefields.Add(xpath);
                }
            }

            foreach (var f in updatefields)
            {
                if (f.EndsWith("/message"))
                {
                    // special processing for editor, to place code in standard place.
                    if (DataLangRecord.XMLDoc.SelectSingleNode("genxml/edt") == null)
                    {
                        DataLangRecord.AddSingleNode("edt", "", "genxml");
                    }
                    if (info.GetXmlProperty("genxml/textbox/message") == "")
                    {
                        DataLangRecord.SetXmlProperty("genxml/edt/message", info.GetXmlPropertyRaw("genxml/edt/message"));
                    }
                    else
                    {
                        DataLangRecord.SetXmlProperty("genxml/edt/message", info.GetXmlPropertyRaw("genxml/textbox/message")); // ajax on ckeditor (Ajax diesn't work for telrik)
                    }
                }
                else
                {
                    DataLangRecord.RemoveXmlNode(f);
                    var xpathDest = f.Split('/');
                    if (xpathDest.Count() >= 2)
                    {
                        DataLangRecord.AddXmlNode(info.XMLData, f, xpathDest[0] + "/" + xpathDest[1]);
                    }
                }

                var datatype = info.GetXmlProperty(f + "/@datatype");
                if (datatype == "date")
                {
                    DataLangRecord.SetXmlProperty(f, info.GetXmlProperty(f), TypeCode.DateTime);
                }
                else if (datatype == "double")
                {
                    DataLangRecord.SetXmlPropertyDouble(f, info.GetXmlProperty(f));
                }
                else if (datatype == "html")
                {
                    DataLangRecord.SetXmlProperty(f, info.GetXmlPropertyRaw(f));
                }
                else
                {
                    DataLangRecord.SetXmlProperty(f, info.GetXmlProperty(f).Trim());
                }


                DataRecord.RemoveXmlNode(f);
            }


            updatefields = new List <String>();
            fieldList    = NBrightBuyUtils.GetAllFieldxPaths(info);
            foreach (var xpath in fieldList)
            {
                var id = xpath.Split('/').Last();
                if (info.GetXmlProperty(xpath + "/@update") == "save")
                {
                    updatefields.Add(xpath);
                }
            }

            foreach (var f in updatefields)
            {
                var datatype = info.GetXmlProperty(f + "/@datatype");
                if (datatype == "date")
                {
                    DataRecord.SetXmlProperty(f, info.GetXmlProperty(f), TypeCode.DateTime);
                }
                else if (datatype == "double")
                {
                    DataRecord.SetXmlPropertyDouble(f, info.GetXmlProperty(f));
                }
                else if (datatype == "html")
                {
                    DataRecord.SetXmlProperty(f, info.GetXmlPropertyRaw(f));
                }
                else
                {
                    DataRecord.SetXmlProperty(f, info.GetXmlProperty(f));
                }

                // if we have a image field then we need to create the imageurl field
                if (info.GetXmlProperty(f.Replace("textbox/", "hidden/hidinfo")) == "Img=True")
                {
                    DataRecord.SetXmlProperty(f.Replace("textbox/", "hidden/") + "url", StoreSettings.Current.FolderImages + "/" + info.GetXmlProperty(f.Replace("textbox/", "hidden/hid")));
                    DataRecord.SetXmlProperty(f.Replace("textbox/", "hidden/") + "path", StoreSettings.Current.FolderImagesMapPath + "\\" + info.GetXmlProperty(f.Replace("textbox/", "hidden/hid")));
                }
                if (f == "genxml/dropdownlist/ddlparentcatid")
                {
                    var parentitemid = info.GetXmlProperty(f);
                    if (!Utils.IsNumeric(parentitemid))
                    {
                        parentitemid = "0";
                    }
                    if (DataRecord.ParentItemId != Convert.ToInt32(parentitemid))
                    {
                        _oldcatcascadeid        = DataRecord.ParentItemId;
                        _doCascadeIndex         = true;
                        DataRecord.ParentItemId = Convert.ToInt32(parentitemid);
                    }
                }
                DataLangRecord.RemoveXmlNode(f);
            }
        }
コード例 #2
0
        private void CreateXchartOrderRevDataBind(object sender, EventArgs e)
        {
            var lc = (Literal) sender;
            var container = (IDataItemContainer) lc.NamingContainer;
            lc.Visible = visibleStatus.DefaultIfEmpty(true).First();
            if (lc.Visible && container.DataItem != null)
            {
                var nbi1 = (NBrightInfo) container.DataItem;
                var strOut = "";
                var nodList = nbi1.XMLDoc.SelectNodes("root/orderstats/*");
                if (nodList != null)
                {
                    foreach (XmlNode nod in nodList)
                    {
                        var nbi = new NBrightInfo();
                        nbi.XMLData = nod.OuterXml;

                        strOut += "{'x': '" + nbi.GetXmlPropertyInt("item/createdyear") + "-" + nbi.GetXmlPropertyInt("item/createdmonth") + "',";
                        strOut += "'y': " + nbi.GetXmlPropertyRaw("item/appliedtotal").ToString() + "},";

                    }
                    strOut = strOut.TrimEnd(',');
                }

                lc.Text = strOut;
            }
        }
コード例 #3
0
        public void Build(String xmlData, List<String> metaTags)
        {
            _criteria = "";
            var obj = new NBrightInfo();
            try
            {
                obj.XMLData = xmlData;
            }
            catch
            {
                //Just jump out without search.
            }

            // using a client side list of disabled token caused some issues with ajax. The new prefered method is to calc server side.
            var disabledtokens = GetDisabledTokens(obj);

            //Get only search tags
            var searchTags = new List<String>();
            foreach (var mta in metaTags)
            {
                var orderId = GenXmlFunctions.GetGenXmlValue(mta, "tag/@id");
                var active = GenXmlFunctions.GetGenXmlValue(mta, "tag/@active");
                if (active != "False" && orderId.ToLower().StartsWith("search") && !disabledtokens.Contains(orderId + ";"))
                {
                    searchTags.Add(mta);
                }
            }

            if (searchTags.Count > 0)
            {
                _criteria += "";
                var lp = 0;
                foreach (var mt in searchTags)
                {
                    lp += 1;
                    var action = GenXmlFunctions.GetGenXmlValue(mt, "tag/@action");
                    var search = GenXmlFunctions.GetGenXmlValue(mt, "tag/@search");
                    var sqlfield = GenXmlFunctions.GetGenXmlValue(mt, "tag/@sqlfield");
                    var sqlcol = GenXmlFunctions.GetGenXmlValue(mt, "tag/@sqlcol");
                    var searchfrom = GenXmlFunctions.GetGenXmlValue(mt, "tag/@searchfrom");
                    var searchto = GenXmlFunctions.GetGenXmlValue(mt, "tag/@searchto");
                    var sqltype = GenXmlFunctions.GetGenXmlValue(mt, "tag/@sqltype");
                    var sqloperator = GenXmlFunctions.GetGenXmlValue(mt, "tag/@sqloperator");
                    var sqlinject = GenXmlFunctions.GetGenXmlValue(mt, "tag/@sqlinject");

                    if (sqlfield == "") sqlfield = GenXmlFunctions.GetGenXmlValue(mt, "tag/@xpath"); //check is xpath of node ha been used.

                    if (lp == 1) sqloperator = ""; // use the "and" sepcified above for the first criteria.

                    // the < sign cannot be used in a XML attribute (it's illegal), so to do a xpath minimum value, we use a {LessThan} token.
                    // Ummm!!!. http://msdn.microsoft.com/en-us/library/ms748250(v=vs.110).aspx
                    if (sqlfield.Contains("{LessThan}")) sqlfield = sqlfield.Replace("{LessThan}", "<");
                    if (sqlfield.Contains("{GreaterThan}")) sqlfield = sqlfield.Replace("{GreaterThan}", ">"); // to keep it consistant

                    if (sqltype == "") sqltype = "nvarchar(max)";

                    if (sqlcol == "") sqlcol = "XMLData";

                    var searchVal = obj.GetXmlProperty(search);
                    if (searchVal == "") searchVal = GenXmlFunctions.GetGenXmlValue(mt, "tag/@static");

                    var searchValFrom = obj.GetXmlPropertyRaw(searchfrom);
                    var searchValTo = obj.GetXmlPropertyRaw(searchto);

                    if (sqltype.ToLower() == "datetime")
                    {
                        if (Utils.IsDate(searchValFrom))
                            searchValFrom = Convert.ToDateTime(searchValFrom).ToString("yyyy-MM-dd HH:mm:ss");
                        else
                            searchValFrom = "";
                        if (Utils.IsDate(searchValTo))
                        {
                            var searchToDate = Convert.ToDateTime(searchValTo);
                            searchToDate = searchToDate.AddDays(1);
                            var strippedToDate = searchToDate.Date;
                            searchValTo = strippedToDate.ToString("yyyy-MM-dd HH:mm:ss");
                        }
                        else
                            searchValTo = "";
                        if (Utils.IsDate(searchVal))
                            searchVal = Convert.ToDateTime(searchVal).ToString("yyyy-MM-dd HH:mm:ss");
                        else
                            searchVal = "";
                    }

                    switch (action.ToLower())
                    {
                        case "sqloperator":
                            _criteria += " " + sqloperator + " ";
                            break;
                        case "sqlinject":
                            _criteria += " " + sqlinject + " ";
                            break;
                        case "open":
                            _criteria += sqloperator + " ( ";
                            break;
                        case "close":
                            _criteria += " ) ";
                            break;
                        case "equal":
                            _criteria += " " + sqloperator + " " +
                                         GenXmlFunctions.GetSqlFilterText(sqlfield, sqltype, searchVal, sqlcol);
                            break;
                        case "not":
                            _criteria += " " + sqloperator + " " +
                                         GenXmlFunctions.GetSqlFilterText(sqlfield, sqltype, searchVal, sqlcol,"!=");
                            break;
                        case "like":
                            if (searchVal == "") searchVal = "NORESULTSnbright";
                            // for "like", build the sql so we have valid value, but add a fake search so the result is nothing for no selection values
                            _criteria += " " + sqloperator + " " + GenXmlFunctions.GetSqlFilterLikeText(sqlfield, sqltype, searchVal, sqlcol);

                            break;
                        case "range":
                            if (searchValFrom != "") // don't include search if we have no value input.
                            {
                                // We always need to return a value, otherwise we get an error, so range select cannot be empty. (we'll default here to 9999999)
                                if (searchValFrom == "")
                                {
                                    if (sqltype.ToLower() == "datetime")
                                        searchValFrom = "1800-01-01";
                                    else
                                        searchValFrom = "0";
                                }
                                if (searchValTo == "")
                                {
                                    if (sqltype.ToLower() == "datetime")
                                        searchValTo = "3000-12-30";
                                    else
                                        searchValTo = "999999999";
                                }

                                _criteria += " " + sqloperator + " " +
                                             GenXmlFunctions.GetSqlFilterRange(sqlfield, sqltype, searchValFrom, searchValTo, sqlcol);
                            }
                            else
                            {
                                _criteria += " 1 = 1 "; // add a dummy test, so we get a valid SQL structure.
                            }
                            break;
                        case "cats":
                            _criteria += " " + sqloperator + " ";
                            var selectoperator = GenXmlFunctions.GetGenXmlValue(mt, "tag/@selectoperator");
                            _criteria += BuildCategorySearch(search, obj, selectoperator);
                            break;
                        case "cat":
                            _criteria += " {criteriacatid} "; // add token for catergory search ()
                            break;
                    }
                }
            }
        }
コード例 #4
0
        public void Build(String xmlData, List<String> metaTags)
        {
            _criteria = "";
            var obj = new NBrightInfo();
            try
            {
                obj.XMLData = xmlData;
            }
            catch
            {
                //Just jump out without search.
            }

            // using a client side list of disabled token caused some issues with ajax. The new prefered method is to calc server side.
            var disabledtokens = GetDisabledTokens(obj);

            //Get only search tags
            var searchTags = new List<String>();
            foreach (var mta in metaTags)
            {
                var orderId = GenXmlFunctions.GetGenXmlValue(mta, "tag/@id");
                var active = GenXmlFunctions.GetGenXmlValue(mta, "tag/@active");
                if (active != "False" && orderId.ToLower().StartsWith("search") && !disabledtokens.Contains(orderId + ";"))
                {
                    searchTags.Add(mta);
                }
            }

            if (searchTags.Count > 0)
            {
                _criteria += "";
                var lp = 0;
                foreach (var mt in searchTags)
                {
                    lp += 1;
                    var action = GenXmlFunctions.GetGenXmlValue(mt, "tag/@action");
                    var search = GenXmlFunctions.GetGenXmlValue(mt, "tag/@search");
                    var sqlfield = GenXmlFunctions.GetGenXmlValue(mt, "tag/@sqlfield");
                    var sqlcol = GenXmlFunctions.GetGenXmlValue(mt, "tag/@sqlcol");
                    var searchfrom = GenXmlFunctions.GetGenXmlValue(mt, "tag/@searchfrom");
                    var searchto = GenXmlFunctions.GetGenXmlValue(mt, "tag/@searchto");
                    var sqltype = GenXmlFunctions.GetGenXmlValue(mt, "tag/@sqltype");
                    var sqloperator = GenXmlFunctions.GetGenXmlValue(mt, "tag/@sqloperator");
                    var sqlinject = GenXmlFunctions.GetGenXmlValue(mt, "tag/@sqlinject");

                    if (sqlfield == "") sqlfield = GenXmlFunctions.GetGenXmlValue(mt, "tag/@xpath"); //check is xpath of node ha been used.

                    if (lp == 1) sqloperator = ""; // use the "and" sepcified above for the first criteria.

                    // the < sign cannot be used in a XML attribute (it's illegal), so to do a xpath minimum value, we use a {LessThan} token.
                    // Ummm!!!. http://msdn.microsoft.com/en-us/library/ms748250(v=vs.110).aspx
                    if (sqlfield.Contains("{LessThan}")) sqlfield = sqlfield.Replace("{LessThan}", "<");
                    if (sqlfield.Contains("{GreaterThan}")) sqlfield = sqlfield.Replace("{GreaterThan}", ">"); // to keep it consistant

                    if (sqltype == "") sqltype = "nvarchar(max)";

                    if (sqlcol == "") sqlcol = "XMLData";

                    var searchVal = obj.GetXmlProperty(search);
                    if (searchVal == "") searchVal = GenXmlFunctions.GetGenXmlValue(mt, "tag/@static");

                    var searchValFrom = obj.GetXmlPropertyRaw(searchfrom);
                    var searchValTo = obj.GetXmlPropertyRaw(searchto);

                    if (sqltype.ToLower() == "datetime")
                    {
                        if (Utils.IsDate(searchValFrom))
                            searchValFrom = Convert.ToDateTime(searchValFrom).ToString("yyyy-MM-dd HH:mm:ss");
                        else
                            searchValFrom = "";
                        if (Utils.IsDate(searchValTo))
                        {
                            var searchToDate = Convert.ToDateTime(searchValTo);
                            searchToDate = searchToDate.AddDays(1);
                            var strippedToDate = searchToDate.Date;
                            searchValTo = strippedToDate.ToString("yyyy-MM-dd HH:mm:ss");
                        }
                        else
                            searchValTo = "";
                        if (Utils.IsDate(searchVal))
                            searchVal = Convert.ToDateTime(searchVal).ToString("yyyy-MM-dd HH:mm:ss");
                        else
                            searchVal = "";
                    }

                    switch (action.ToLower())
                    {
                        case "sqloperator":
                            _criteria += " " + sqloperator + " ";
                            break;
                        case "sqlinject":
                            _criteria += " " + sqlinject + " ";
                            break;
                        case "open":
                            _criteria += sqloperator + " ( ";
                            break;
                        case "close":
                            _criteria += " ) ";
                            break;
                        case "equal":
                            _criteria += " " + sqloperator + " " +
                                         GenXmlFunctions.GetSqlFilterText(sqlfield, sqltype, searchVal, sqlcol);
                            break;
                        case "not":
                            _criteria += " " + sqloperator + " " +
                                         GenXmlFunctions.GetSqlFilterText(sqlfield, sqltype, searchVal, sqlcol, "!=");
                            break;
                        case "like":
                            if (searchVal == "") searchVal = "NORESULTSnbright";
                            // for "like", build the sql so we have valid value, but add a fake search so the result is nothing for no selection values
                            _criteria += " " + sqloperator + " " + GenXmlFunctions.GetSqlFilterLikeText(sqlfield, sqltype, searchVal, sqlcol);

                            break;
                        case "range":
                            if (searchValFrom != "") // don't include search if we have no value input.
                            {
                                // We always need to return a value, otherwise we get an error, so range select cannot be empty. (we'll default here to 9999999)
                                if (searchValFrom == "")
                                {
                                    if (sqltype.ToLower() == "datetime")
                                        searchValFrom = "1800-01-01";
                                    else
                                        searchValFrom = "0";
                                }
                                if (searchValTo == "")
                                {
                                    if (sqltype.ToLower() == "datetime")
                                        searchValTo = "3000-12-30";
                                    else
                                        searchValTo = "999999999";
                                }

                                _criteria += " " + sqloperator + " " +
                                             GenXmlFunctions.GetSqlFilterRange(sqlfield, sqltype, searchValFrom, searchValTo, sqlcol);
                            }
                            else
                            {
                                _criteria += " 1 = 1 "; // add a dummy test, so we get a valid SQL structure.
                            }
                            break;
                        case "cats":
                            _criteria += " " + sqloperator + " ";
                            var selectoperator = GenXmlFunctions.GetGenXmlValue(mt, "tag/@selectoperator");
                            _criteria += BuildCategorySearch(search, obj, selectoperator);
                            break;
                        case "cat":
                            _criteria += " {criteriacatid} "; // add token for catergory search ()
                            break;
                    }
                }
            }
        }