Пример #1
0
        static List <CategoryXMLModel> GetInnerCategories(XmlNodeList groupsNode, string ParentId)
        {
            List <CategoryXMLModel> listModels = new List <CategoryXMLModel>();

            foreach (var group in groupsNode)
            {
                CategoryXMLModel categoryModel = new CategoryXMLModel();

                XmlNode categoryIdNode = ((XmlNode)group).SelectSingleNode("Ид");
                if (categoryIdNode != null)
                {
                    categoryModel.Id = categoryIdNode.InnerText;
                }
                XmlNode categoryTitleNode = ((XmlNode)group).SelectSingleNode("Наименование");
                if (categoryTitleNode != null)
                {
                    categoryModel.Title = categoryTitleNode.InnerText;
                }

                categoryModel.ParentId = ParentId;

                listModels.Add(categoryModel);

                XmlNode categoriesNode = ((XmlNode)group).SelectSingleNode("Группы");
                if (categoriesNode != null)
                {
                    XmlNodeList innerGroup = ((XmlNode)categoriesNode).SelectNodes("Группа");
                    listModels.AddRange(GetInnerCategories(innerGroup, categoryModel.Id));
                }
            }
            return(listModels);
        }
Пример #2
0
        static List <CategoryXMLModel> GetListCategoriesWithChildCategories(List <CategoryXMLModel> groupsList, ref List <CategoryXMLModel> allstock)
        {
            List <CategoryXMLModel> listModels = new List <CategoryXMLModel>();

            foreach (var group in groupsList)
            {
                CategoryXMLModel categoryModel = group;

                listModels.Add(categoryModel);
                //allstock.Remove(categoryModel);
                listModels.AddRange(allstock.Where(w => listModels.Any(a => a.Id == w.ParentId)));

                allstock.RemoveAll(i => listModels.Any(a => a.Id == i.Id));
                //while (categoryModel.ParentId!=null)
                //{
                //    categoryModel = allstock.FirstOrDefault(f => f.Id == categoryModel.ParentId);
                //    if (categoryModel!=null)
                //    {
                //        listModels.Add(categoryModel);
                //        allstock.Remove(categoryModel);
                //    }
                //    else
                //    {
                //        break;
                //    }
                //}
            }

            return(listModels);
        }
Пример #3
0
        public static AllEntity1CXMLModel GetXmlModel(out bool flagError)
        {
            List <string> stoplistTitleCategories = new List <string>(new string[] {
                "Сайдинг и водосточная система",
                "Металлоизделия",
                "Плитка",
                "Декоративные материалы",
                "Декоративные покрытия"
            });
            List <CategoryXMLModel> stoplistCategories = new List <CategoryXMLModel>();

            AllEntity1CXMLModel outModel = new AllEntity1CXMLModel();

            try
            {
                XmlDocument xDoc = new XmlDocument();
                var         path = GetLastFilePath(pathDirectoryFiles);
                xDoc.Load(path);

                var     XmlElement  = xDoc.DocumentElement;
                XmlNode xProducts   = XmlElement.SelectSingleNode("ВсеТовары");
                XmlNode xCategories = XmlElement.SelectSingleNode("ВсеКатегории");

                #region categories
                XmlNodeList      categories    = xCategories.SelectNodes("Группа");
                CategoryXMLModel categoryModel = new CategoryXMLModel();

                List <CategoryXMLModel> outCategoryModels = GetInnerCategories(categories, null);

                var stoplistRootCategories = outCategoryModels.Where(i => stoplistTitleCategories.Any(a => a == i.Title)).ToList();

                stoplistCategories = GetListCategoriesWithChildCategories(stoplistRootCategories, ref outCategoryModels);
                #endregion

                #region products

                List <ProductXMLModel> listProducts = new List <ProductXMLModel>();

                XmlNodeList Products = xProducts.SelectNodes("Товар");
                int         testIndx = 0;
                foreach (var product in Products)
                {
                    bool        flagAdd = true;
                    XmlNodeList Inners  = ((XmlNode)product).SelectNodes("*");

                    var notDisplayed = ((XmlNode)product).SelectSingleNode("НеОтображатьНаСайте");
                    if (notDisplayed.InnerText == "Да")
                    {
                        continue;
                    }

                    ProductXMLModel prodModel = new ProductXMLModel();

                    XmlNode IdNode = ((XmlNode)product).SelectSingleNode("Ид");
                    prodModel.Id = IdNode.InnerText;
                    XmlNode TitleNode = ((XmlNode)product).SelectSingleNode("Наименование");
                    prodModel.Title = TitleNode.InnerText;

                    XmlNode GroupsNode = ((XmlNode)product).SelectSingleNode("Группы");
                    foreach (var group in GroupsNode)
                    {
                        var idgroup = ((XmlNode)group).InnerText;
                        if (stoplistCategories.Any(a => a.Id == idgroup))
                        {
                            flagAdd = false;
                        }
                        prodModel.CategoryTextIds.Add(((XmlNode)group).InnerText);
                    }

                    XmlNode Brand = ((XmlNode)product).SelectSingleNode("Бренд");
                    if (Brand != null)
                    {
                        prodModel.Brand = Brand.InnerText;
                    }


                    XmlNode Priority     = ((XmlNode)product).SelectSingleNode("Приоритетный");
                    bool    priorityFlag = false;
                    if (Priority.InnerText == "Да")
                    {
                        priorityFlag = true;
                    }
                    //bool.TryParse(Priority.InnerText, out priorityFlag);
                    prodModel.Priority = priorityFlag;

                    XmlNode PriceNode       = ((XmlNode)product).SelectSingleNode("Цена");
                    XmlNode PriceForOneNode = ((XmlNode)PriceNode).SelectSingleNode("ЦенаЗаЕдиницу");
                    double  price           = 0;

                    double.TryParse(PriceForOneNode.InnerText.Replace(" ", ""), out price);

                    prodModel.Price     = price;
                    prodModel.TypePrice = Common.TypeProductPrice.SimplePrice;
                    if (flagAdd)
                    {
                        listProducts.Add(prodModel);
                        //testIndx++;
                        //if (testIndx>10)
                        //{
                        //    break;
                        //}
                    }
                }
                #endregion


                outModel.Products   = listProducts;
                outModel.Categories = outCategoryModels;


                flagError = false;

                ChangePathFile(path);
                return(outModel);
            }
            catch (Exception)
            {
                flagError = true;
                return(outModel);
            }
        }