public List <string> GetStoresNames(FileIdentifiers fileIdentifiers, XmlElementId xmlElementId)
        {
            FileInfo[] filesInDir = GetFileInfo(fileIdentifiers);
            xmlElementId.XmlFullPath = System.IO.Path.Combine(fileIdentifiers.DirName, filesInDir[0].Name);
            var storeNames = GetListOfElementsFromXml(xmlElementId);

            return(storeNames);
        }
        public List <string> GetStoresNames(FileIdentifiers fileIdentifiers, string optionalAreaName)
        {
            FileInfo[] filesInDir   = GetFileInfo(fileIdentifiers);
            var        xmlElementId = new XmlElementId()
            {
                DescendantFrom = "Store",
                ElementName    = "StoreName",
                XmlFullPath    = System.IO.Path.Combine(Path, System.IO.Path.Combine(fileIdentifiers.DirName, filesInDir[0].Name))
            };

            if (!string.IsNullOrEmpty(optionalAreaName))
            {
                xmlElementId.ElementCondition         = "City";
                xmlElementId.ElementConditionExpected = optionalAreaName;
            }

            var storeNames = GetListOfElementsFromXml(xmlElementId);

            return(storeNames);
        }
        public async Task <List <string> > GetItemsOfStore(FileIdentifiers fileIdentifiers)
        {
            var items        = new List <string>();
            var xmlElementId = new XmlElementId();

            xmlElementId.XmlFullPath    = GetStoreFullPath(fileIdentifiers);
            xmlElementId.DescendantFrom = "Item";
            xmlElementId.ElementName    = "ItemName";

            await Task.Run(() =>
            {
                var listOfItems = GetListOfElementsFromXml(xmlElementId);
                foreach (var item in listOfItems)
                {
                    if (!items.Contains(item))
                    {
                        items.Add(item);
                    }
                }
            });

            return(items);
        }
        public List <string> GetListOfElementsFromXml(XmlElementId xmlElementId)
        {
            var listOfElements = new List <string>();

            try
            {
                var XElementDoc = XElement.Load(xmlElementId.XmlFullPath);
                listOfElements = (from element
                                  in XElementDoc.Descendants()
                                  .Where(el => string.Compare(el.Name.LocalName, xmlElementId.DescendantFrom,
                                                              StringComparison.OrdinalIgnoreCase) == 0)
                                  where (string.IsNullOrEmpty(xmlElementId.ElementCondition) ||
                                         ((string)element.Element(xmlElementId.ElementCondition)).Trim() == xmlElementId.ElementConditionExpected)
                                  select(string) element
                                  .Element(xmlElementId.ElementName)).ToList();
            }
            catch (Exception ex)
            {
                //File.WriteAllText($"{System.IO.Path.Combine(Path, @"LogFiles\StoreItems.txt")}", $"{xmlElementId.ElementName} not found");
                //log here
            }

            return(listOfElements);
        }