Beispiel #1
0
        private void DoExportDocs()
        {
            var fileMapPathList = new List<string>();

            var l = ModCtrl.GetList(PortalId, -1, "PRD");
            foreach (var i in l)
            {
                var nodlist = i.XMLDoc.SelectNodes("genxml/docs/*");
                if (nodlist != null)
                {
                    foreach (XmlNode nod in nodlist)
                    {
                        var fname = nod.SelectSingleNode("./hidden/docpath");
                        if (fname != null && fname.InnerText != "") fileMapPathList.Add(fname.InnerText);
                    }
                }
            }


            // export any entitytype provider data
            // This is data created by plugins into the NBS data tables.
            var pluginData = new PluginData(PortalSettings.Current.PortalId);
            var provList = pluginData.GetEntityTypeProviders();
            foreach (var prov in provList)
            {
                var entityprov = EntityTypeInterface.Instance(prov.Key);
                if (entityprov != null)
                {
                    var provl = ModCtrl.GetList(PortalId, -1, entityprov.GetEntityTypeCode());
                    foreach (var i in provl)
                    {
                        var nodlist = i.XMLDoc.SelectNodes("genxml/docs/*");
                        if (nodlist != null)
                        {
                            foreach (XmlNode nod in nodlist)
                            {
                                var fname = nod.SelectSingleNode("./hidden/docpath");
                                if (fname != null && fname.InnerText != "") fileMapPathList.Add(fname.InnerText);
                            }
                        }
                    }
                }
            }


            DnnUtils.Zip(StoreSettings.Current.FolderUploadsMapPath + "\\exportdocs.zip", fileMapPathList);

            Utils.ForceDocDownload(StoreSettings.Current.FolderUploadsMapPath + "\\exportdocs.zip", PortalSettings.PortalAlias.HTTPAlias + "_exportdocs.zip", Response);
        }
Beispiel #2
0
        private void DoExport()
        {
            
            var strXml = new StringBuilder("<root>");
            var objCtrlUser = new UserController();

            if (GenXmlFunctions.GetField(rpData,"exportproducts") == "True")
            {

                // export any entitytype provider data
                // This is data created by plugins into the NBS data tables.
                var pluginData = new PluginData(PortalSettings.Current.PortalId);
                var provList = pluginData.GetEntityTypeProviders();
                foreach (var prov in provList)
                {
                    var entityprov = EntityTypeInterface.Instance(prov.Key);
                    if (entityprov != null)
                    {
                        var provl = ModCtrl.GetList(PortalId, -1, entityprov.GetEntityTypeCode());
                        foreach (var i in provl) { strXml.Append(i.ToXmlItem()); }

                        provl = ModCtrl.GetList(PortalId, -1, entityprov.GetEntityTypeCodeLang());
                        foreach (var i in provl) { strXml.Append(i.ToXmlItem()); }
                    }
                }

                var l = ModCtrl.GetList(PortalId, -1, "PRD");
                foreach (var i in l) { strXml.Append(i.ToXmlItem()); }

                l = ModCtrl.GetList(PortalId, -1, "PRDLANG");
                foreach (var i in l) { strXml.Append(i.ToXmlItem()); }
            
                l = ModCtrl.GetList(PortalId, -1, "PRDXREF");
                foreach (var i in l) { strXml.Append(i.ToXmlItem()); }

                l = ModCtrl.GetList(PortalId, -1, "USERPRDXREF");
                foreach (var i in l)
                {
                    var u = objCtrlUser.GetUser(i.PortalId, i.UserId);
                    if (u != null)
                    {
                        i.TextData = u.Username;
                        strXml.Append(i.ToXmlItem());
                    }
                }
                
            }

            if (GenXmlFunctions.GetField(rpData, "exportcategories") == "True")
            {
                var l = ModCtrl.GetList(PortalId, -1, "CATEGORY");
                foreach (var i in l) { strXml.Append(i.ToXmlItem()); }

                l = ModCtrl.GetList(PortalId, -1, "CATEGORYLANG");
                foreach (var i in l) { strXml.Append(i.ToXmlItem()); }
            }

            if (GenXmlFunctions.GetField(rpData, "exportcategories") == "True" && GenXmlFunctions.GetField(rpData, "exportproducts") == "True")
            {
                var l = ModCtrl.GetList(PortalId, -1, "CATCASCADE");
                foreach (var i in l) { strXml.Append(i.ToXmlItem()); }
                l = ModCtrl.GetList(PortalId, -1, "CATXREF");
                foreach (var i in l) { strXml.Append(i.ToXmlItem()); }
            }

            if (GenXmlFunctions.GetField(rpData, "exportproperties") == "True")
            {
                var l = ModCtrl.GetList(PortalId, -1, "GROUP");
                foreach (var i in l) { strXml.Append(i.ToXmlItem()); }

                l = ModCtrl.GetList(PortalId, -1, "GROUPLANG");
                foreach (var i in l) { strXml.Append(i.ToXmlItem()); }
            }

            if (GenXmlFunctions.GetField(rpData, "exportsettings") == "True")
            {
                var l = ModCtrl.GetList(PortalId, 0, "SETTINGS");
                foreach (var i in l) { strXml.Append(i.ToXmlItem()); }
            }

            if (GenXmlFunctions.GetField(rpData, "exportorders") == "True")
            {
                var l = ModCtrl.GetList(PortalId, -1, "ORDER");
                foreach (var i in l) { strXml.Append(i.ToXmlItem()); }
            }

            strXml.Append("</root>");

            var doc = new XmlDocument();
            doc.LoadXml(strXml.ToString());
            doc.Save(StoreSettings.Current.FolderUploadsMapPath + "\\export.xml");

            Utils.ForceDocDownload(StoreSettings.Current.FolderUploadsMapPath + "\\export.xml", PortalSettings.PortalAlias.HTTPAlias + "_export.xml", Response);
        }
Beispiel #3
0
        private void DoImport(NBrightInfo nbi)
        {
            var fname = StoreSettings.Current.FolderUploadsMapPath + "\\" + nbi.GetXmlProperty("genxml/hidden/hiddatafile");
            if (System.IO.File.Exists(fname))
            {

                var xmlFile = new XmlDocument();
                xmlFile.Load(fname);

                if (GenXmlFunctions.GetField(rpData, "importproducts") == "True")
                {
                    ImportRecord(xmlFile,"PRD");
                    ImportRecord(xmlFile, "PRDLANG");

                    // import any entitytype provider data
                    // This is data created by plugins into the NBS data tables.
                    var pluginData = new PluginData(PortalSettings.Current.PortalId);
                    var provList = pluginData.GetEntityTypeProviders();
                    foreach (var prov in provList)
                    {
                        var entityprov = EntityTypeInterface.Instance(prov.Key);
                        if (entityprov != null)
                        {
                            ImportRecord(xmlFile, entityprov.GetEntityTypeCode());
                            ImportRecord(xmlFile, entityprov.GetEntityTypeCodeLang());
                        }
                    }

                    ImportRecord(xmlFile, "PRDXREF");
                    ImportRecord(xmlFile, "USERPRDXREF");
                }

                if (GenXmlFunctions.GetField(rpData, "importcategories") == "True")
                {
                    ImportRecord(xmlFile, "CATEGORY");
                    ImportRecord(xmlFile, "CATEGORYLANG");
                }

                if (GenXmlFunctions.GetField(rpData, "importcategories") == "True" && GenXmlFunctions.GetField(rpData, "importproducts") == "True")
                {
                    ImportRecord(xmlFile, "CATCASCADE");
                    ImportRecord(xmlFile, "CATXREF");
                }

                if (GenXmlFunctions.GetField(rpData, "importproperties") == "True")
                {
                    ImportRecord(xmlFile, "GROUP");
                    ImportRecord(xmlFile, "GROUPLANG");
                }

                if (GenXmlFunctions.GetField(rpData, "importsettings") == "True")
                {
                    ImportRecord(xmlFile, "SETTINGS");
                }

                if (GenXmlFunctions.GetField(rpData, "importorders") == "True")
                {
                    ImportRecord(xmlFile, "ORDER");
                }

                RelinkNewIds();
            }
        }
Beispiel #4
0
        private void ImportRecord(XmlDocument xmlFile, String typeCode, Boolean updaterecordsbyref = true)
        {
            var nodList = xmlFile.SelectNodes("root/item[./typecode='" + typeCode + "']");
            if (nodList != null)
            {
                foreach (XmlNode nod in nodList)
                {
                    var nbi = new NBrightInfo();
                    nbi.FromXmlItem(nod.OuterXml);
                    var olditemid = nbi.ItemID;

                    // check to see if we have a new record or updating a existing one, use the ref field to find out.
                    nbi.ItemID = -1;
                    nbi.PortalId = PortalId;

                    if (typeCode == "PRD" && updaterecordsbyref)
                    {
                        var itemref = nbi.GetXmlProperty("genxml/textbox/txtproductref");
                        if (itemref != "")
                        {
                            var l = ModCtrl.GetList(PortalId, -1, "PRD", " and NB3.ProductRef = '" + itemref.Replace("'", "''") + "' ");
                            if (l.Count > 0) nbi.ItemID = l[0].ItemID;
                        }
                    }
                    if (typeCode == "PRDLANG" && updaterecordsbyref)
                    {
                        if (_recordXref.ContainsKey(nbi.ParentItemId))
                        {
                            var l = ModCtrl.GetList(PortalId, -1, "PRDLANG", " and NB1.parentitemid = '" + _recordXref[nbi.ParentItemId].ToString("") + "' and NB1.Lang = '" + nbi.Lang + "'");
                            if (l.Count > 0) nbi.ItemID = l[0].ItemID;
                            nbi.ParentItemId = _recordXref[nbi.ParentItemId];
                        }
                    }



                    // import any entitytype provider data
                    // This is data created by plugins into the NBS data tables.
                    var pluginData = new PluginData(PortalSettings.Current.PortalId);
                    var provList = pluginData.GetEntityTypeProviders();
                    foreach (var prov in provList)
                    {
                        var entityprov = EntityTypeInterface.Instance(prov.Key);
                        if (entityprov != null)
                        {
                            if (typeCode == entityprov.GetEntityTypeCode() && updaterecordsbyref)
                            {
                                var itemref = nbi.GetXmlProperty("genxml/textbox/txtproductref");
                                if (itemref != "")
                                {
                                    var l = ModCtrl.GetList(PortalId, -1, entityprov.GetEntityTypeCode(), " and NB3.ProductRef = '" + itemref.Replace("'", "''") + "' ");
                                    if (l.Count > 0) nbi.ItemID = l[0].ItemID;
                                }
                            }
                            if (typeCode == entityprov.GetEntityTypeCodeLang() && updaterecordsbyref)
                            {
                                if (_recordXref.ContainsKey(nbi.ParentItemId))
                                {
                                    var l = ModCtrl.GetList(PortalId, -1, entityprov.GetEntityTypeCodeLang(), " and NB1.parentitemid = '" + _recordXref[nbi.ParentItemId].ToString("") + "' and NB1.Lang = '" + nbi.Lang + "'");
                                    if (l.Count > 0) nbi.ItemID = l[0].ItemID;
                                    nbi.ParentItemId = _recordXref[nbi.ParentItemId];
                                }
                            }

                        }
                    }


                    if (typeCode == "PRDXREF" && updaterecordsbyref)
                    {
                        if (_recordXref.ContainsKey(nbi.XrefItemId)) nbi.XrefItemId = _recordXref[nbi.XrefItemId];
                        if (_recordXref.ContainsKey(nbi.ParentItemId)) nbi.ParentItemId = _recordXref[nbi.ParentItemId];
                    }

                    if (typeCode == "USERPRDXREF" && updaterecordsbyref)
                    {
                        var u = UserController.GetUserByName(PortalId, nbi.TextData);
                        if (u != null)
                        {
                            if (_recordXref.ContainsKey(nbi.ParentItemId)) nbi.ParentItemId = _recordXref[nbi.ParentItemId];
                            if (_recordXref.ContainsKey(nbi.XrefItemId)) nbi.UserId = u.UserID;
                        }
                    }


                    if (typeCode == "CATEGORY" && updaterecordsbyref)
                    {
                        var itemref = nbi.GetXmlProperty("genxml/textbox/txtcategoryref");
                        if (itemref != "")
                        {
                            var l = ModCtrl.GetList(PortalId, -1, "CATEGORY", " and [XMLData].value('(genxml/textbox/txtcategoryref)[1]','nvarchar(max)') = '" + itemref.Replace("'", "''") + "' ");
                            if (l.Count > 0) nbi.ItemID = l[0].ItemID;
                        }
                    }
                    if (typeCode == "CATEGORYLANG" && updaterecordsbyref)
                    {
                        if (_recordXref.ContainsKey(nbi.ParentItemId))
                        {
                            var l = ModCtrl.GetList(PortalId, -1, "CATEGORYLANG", " and NB1.parentitemid = '" + _recordXref[nbi.ParentItemId].ToString("") + "' and NB1.Lang = '" + nbi.Lang + "'");
                            if (l.Count > 0) nbi.ItemID = l[0].ItemID;
                            nbi.ParentItemId = _recordXref[nbi.ParentItemId];
                        }
                    }
                    if (typeCode == "GROUP" && updaterecordsbyref)
                    {
                        var itemref = nbi.GetXmlProperty("genxml/textbox/groupref");
                        if (itemref != "")
                        {
                            var l = ModCtrl.GetList(PortalId, -1, "GROUP", " and [XMLData].value('(genxml/textbox/groupref)[1]','nvarchar(max)') = '" + itemref.Replace("'", "''") + "' ");
                            if (l.Count > 0) nbi.ItemID = l[0].ItemID;
                        }
                    }
                    if (typeCode == "GROUPLANG" && updaterecordsbyref)
                    {
                        if (_recordXref.ContainsKey(nbi.ParentItemId))
                        {
                            var l = ModCtrl.GetList(PortalId, -1, "GROUPLANG", " and NB1.parentitemid = '" + _recordXref[nbi.ParentItemId].ToString("") + "' and NB1.Lang = '" + nbi.Lang + "'");
                            if (l.Count > 0) nbi.ItemID = l[0].ItemID;
                            nbi.ParentItemId = _recordXref[nbi.ParentItemId];
                        }
                    }
                    if (typeCode == "SETTINGS") // the setting exported are only the portal settings, not module.  So always update and don;t create new.
                    {
                        var l = ModCtrl.GetList(PortalId, 0, "SETTINGS", " and NB1.GUIDKey = 'NBrightBuySettings' ");
                        if (l.Count > 0) nbi.ItemID = l[0].ItemID;
                    }
                    //NOTE: if ORDERS are imported, we expect those to ALWAYS be new records, we don't want to delete any validate orders in this import.

                    // NOTE: we expect the records to be done in typecode order so we know parent and xref itemids.

                    var newitemid = ModCtrl.Update(nbi);
                    if (newitemid > 0) _recordXref.Add(olditemid, newitemid);
                    if (typeCode == "PRD") _productList.Add(newitemid, typeCode);

                    // Add any provider data types
                    foreach (var prov in provList)
                    {
                        var entityprov = EntityTypeInterface.Instance(prov.Key);
                        if (entityprov != null)
                        {
                            if (typeCode == entityprov.GetEntityTypeCode()) _productList.Add(newitemid, typeCode);
                        }
                    }

                }


            }
        }
        private String GetProductListData(Dictionary<String, String> settings,bool paging = true)
        {
            var strOut = "";

            if (!settings.ContainsKey("header")) settings.Add("header", "");
            if (!settings.ContainsKey("body")) settings.Add("body", "");
            if (!settings.ContainsKey("footer")) settings.Add("footer", "");
            if (!settings.ContainsKey("filter")) settings.Add("filter", "");
            if (!settings.ContainsKey("orderby")) settings.Add("orderby", "");
            if (!settings.ContainsKey("returnlimit")) settings.Add("returnlimit", "0");
            if (!settings.ContainsKey("pagenumber")) settings.Add("pagenumber", "0");
            if (!settings.ContainsKey("pagesize")) settings.Add("pagesize", "0");
            if (!settings.ContainsKey("searchtext")) settings.Add("searchtext", "");
            if (!settings.ContainsKey("searchcategory")) settings.Add("searchcategory", "");
            if (!settings.ContainsKey("cascade")) settings.Add("cascade", "False");

            // select a specific entity data type for the product (used by plugins)
            if (!settings.ContainsKey("entitytypecode")) settings.Add("entitytypecode", "PRD");
            if (!settings.ContainsKey("entitytypecodelang")) settings.Add("entitytypecodelang", "PRDLANG");
            var entitytypecodelang = settings["entitytypecodelang"];
            var entitytypecode = settings["entitytypecode"];

            var header = settings["header"];
            var body = settings["body"];
            var footer = settings["footer"];
            var filter = settings["filter"];
            var orderby = settings["orderby"];
            var returnLimit = Convert.ToInt32(settings["returnlimit"]);
            var pageNumber = Convert.ToInt32(settings["pagenumber"]);
            var pageSize = Convert.ToInt32(settings["pagesize"]);
            var cascade = Convert.ToBoolean(settings["cascade"]);

            var searchText = settings["searchtext"];
            var searchCategory = settings["searchcategory"];

            if (searchText != "") filter += " and (NB3.[ProductName] like '%" + searchText + "%' or NB3.[ProductRef] like '%" + searchText + "%' or NB3.[Summary] like '%" + searchText + "%' ) ";

            if (Utils.IsNumeric(searchCategory))
            {
                if (orderby == "{bycategoryproduct}") orderby += searchCategory;
                var objQual = DataProvider.Instance().ObjectQualifier;
                var dbOwner = DataProvider.Instance().DatabaseOwner;
                if (!cascade)
                    filter += " and NB1.[ItemId] in (select parentitemid from " + dbOwner + "[" + objQual + "NBrightBuy] where typecode = 'CATXREF' and XrefItemId = " + searchCategory + ") ";
                else
                    filter += " and NB1.[ItemId] in (select parentitemid from " + dbOwner + "[" + objQual + "NBrightBuy] where (typecode = 'CATXREF' and XrefItemId = " + searchCategory + ") or (typecode = 'CATCASCADE' and XrefItemId = " + searchCategory + ")) ";
            }
            else
            {
                if (orderby == "{bycategoryproduct}") orderby = " order by NB3.productname ";
            }

            // logic for client list of products
            if (NBrightBuyUtils.IsClientOnly())
            {
                filter += " and NB1.ItemId in (select ParentItemId from dbo.[NBrightBuy] as NBclient where NBclient.TypeCode = 'USERPRDXREF' and NBclient.UserId = " + UserController.Instance.GetCurrentUserInfo().UserID.ToString("") + ") ";
            }

            var recordCount = 0;

            var themeFolder = StoreSettings.Current.ThemeFolder;
            if (settings.ContainsKey("themefolder")) themeFolder = settings["themefolder"];
            var templCtrl = NBrightBuyUtils.GetTemplateGetter(themeFolder);

            if (!settings.ContainsKey("portalid")) settings.Add("portalid", PortalSettings.Current.PortalId.ToString("")); // aways make sure we have portalid in settings

            var objCtrl = new NBrightBuyController();

            var headerTempl = templCtrl.GetTemplateData(header, _lang, true, true, true, StoreSettings.Current.Settings());
            var bodyTempl = templCtrl.GetTemplateData(body, _lang, true, true, true, StoreSettings.Current.Settings());
            var footerTempl = templCtrl.GetTemplateData(footer, _lang, true, true, true, StoreSettings.Current.Settings());

            // replace any settings tokens (This is used to place the form data into the SQL)
            headerTempl = Utils.ReplaceSettingTokens(headerTempl, settings);
            headerTempl = Utils.ReplaceUrlTokens(headerTempl);
            bodyTempl = Utils.ReplaceSettingTokens(bodyTempl, settings);
            bodyTempl = Utils.ReplaceUrlTokens(bodyTempl);
            footerTempl = Utils.ReplaceSettingTokens(footerTempl, settings);
            footerTempl = Utils.ReplaceUrlTokens(footerTempl);

            var obj = new NBrightInfo(true);
            strOut = GenXmlFunctions.RenderRepeater(obj, headerTempl);

            // This is data created by plugins into the NBS data tables.
            var pluginData = new PluginData(PortalSettings.Current.PortalId);
            var provList = pluginData.GetEntityTypeProviders();

            if (paging) // get record count for paging
            {
                if (pageNumber == 0) pageNumber = 1;
                if (pageSize == 0) pageSize = StoreSettings.Current.GetInt("pagesize");

                // get only entity type required
                recordCount = objCtrl.GetListCount(PortalSettings.Current.PortalId, -1, entitytypecode, filter, entitytypecodelang, _lang);

            }

            // get selected entitytypecode.
            var objList = objCtrl.GetDataList(PortalSettings.Current.PortalId, -1, entitytypecode, entitytypecodelang, _lang, filter, orderby, StoreSettings.Current.DebugMode, "", returnLimit, pageNumber, pageSize, recordCount);

            strOut += GenXmlFunctions.RenderRepeater(objList, bodyTempl);

            strOut += GenXmlFunctions.RenderRepeater(obj, footerTempl);

            // add paging if needed
            if (paging)
            {
                var pg = new NBrightCore.controls.PagingCtrl();
                strOut += pg.RenderPager(recordCount, pageSize, pageNumber);
            }

            return strOut;
        }