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));
            }
        }