Esempio n. 1
0
        public virtual async Task ImportResourcesFromXmlAsync(int languageId, string xml, bool updateExistingResources = true)
        {
            if (String.IsNullOrEmpty(xml))
            {
                return;
            }

            var language = _languagesService.GetAsQueryable().FirstOrDefault(p => p.Id == languageId);

            if (language == null)
            {
                return;
            }

            var xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(xml);

            var nodes = xmlDoc.SelectNodes(@"//Language/LocaleResource");

            if (nodes == null)
            {
                return;
            }
            foreach (XmlNode node in nodes)
            {
                if (node.Attributes != null)
                {
                    string name      = node.Attributes["Name"]?.InnerText.Trim();
                    string value     = "";
                    var    valueNode = node.SelectSingleNode("Value");
                    if (valueNode != null)
                    {
                        value = valueNode.InnerText;
                    }

                    if (String.IsNullOrEmpty(name))
                    {
                        continue;
                    }

                    var resource = language.LocalizedStrings.FirstOrDefault(x => x.ResourceName.Equals(name, StringComparison.InvariantCultureIgnoreCase));
                    if (resource != null)
                    {
                        if (updateExistingResources)
                        {
                            resource.ResourceValue = value;
                            _dbContext.LocalizedStrings.AddOrUpdate(resource);
                        }
                    }
                    else
                    {
                        _dbContext.LocalizedStrings.Add(new TblLocalizedStrings()
                        {
                            LanguageId    = language.Id,
                            ResourceName  = name,
                            ResourceValue = value
                        });
                    }
                }
            }

            await _dbContext.SaveChangesAsync();

            //clear cache
            ClearCache();
        }