public async Task <IEnumerable <CategoryNamesMapping> > FillWoocommerceProductCategories( IEnumerable <ZlShortCategory> categories, string woocommerceUrl, string consumerKey, string consumerSecret) { var categoryNamesMapping = new CategoryNamesMapping(); await CreateCategoryNamesMapping(new ZlShortCategory { Categories = categories }, categoryNamesMapping); var categoryNamesMatrix = new List <List <CategoryNamesMapping> > { new List <CategoryNamesMapping>(categoryNamesMapping.CategoryNamesMappings) }; GetChildrensByLevel(categoryNamesMatrix); await InsertCategoriesIntoWoocommerce(categoryNamesMatrix, woocommerceUrl, consumerKey, consumerSecret); return(categoryNamesMatrix.FirstOrDefault()); }
private async Task CreateCategoryNamesMapping(ZlShortCategory categories, CategoryNamesMapping categoryNamesMapping) { if (categories.Categories is null) { return; } if (categoryNamesMapping.CategoryNamesMappings is null) { categoryNamesMapping.CategoryNamesMappings = new List <CategoryNamesMapping>(); } var symbolsRegex = new Regex("[^A-Za-z-а-яА-Яіїє.,_/0-9%$&*()+=`~@!# \t\n]"); var notSlugAlphabet = new Regex("[^a-zA-Z0-9\\s\\-]"); var spaceRegex = new Regex("\\s"); var enRegex = new Regex("[^A-Za-z\\s]"); var spaceCharacterAtStartOrEnd = new Regex("^\\s*|\\s*$"); foreach (var cl in categories.Categories) { var cnm = new CategoryNamesMapping(); cnm.Name = symbolsRegex.Replace(await _googleTranslationService.TranslateTextAsync(cl.Label, "uk", "pl"), ""); cnm.Slug = spaceRegex .Replace(spaceCharacterAtStartOrEnd .Replace(notSlugAlphabet .Replace(_transliterationService.TransliterateUaToEnUtf(cnm.Name), ""), ""), "-") .ToLower(); cnm.PlSlug = cl.UrlKey; cnm.PlName = cl.Label; categoryNamesMapping.CategoryNamesMappings.Add(cnm); } for (int i = 0; i < categories.Categories.Count(); i++) { await CreateCategoryNamesMapping(categories.Categories.ElementAt(i), categoryNamesMapping.CategoryNamesMappings.ElementAt(i)); } }