public async Task <MenuCategories> UpdateMenuCategoryAsync(long ownerId, long restaurantId, long menuCategoryId, Dictionary <long, string> categoryName, Dictionary <long, string> categoryDescription)
        {
            CheckTheLoggedInPerson();

            EmployersRestaurants connection = await CheckEmployerRestaurantAsync(ownerId, restaurantId);

            Menus currentMenu = await CheckMenuExistanceAsync(restaurantId);

            List <MenuLanguages> menuLanguages = await MenuLanguagesRepo.GetItemsByMenuId(currentMenu.Id);

            MenuCategories menuCategory = await CheckMenuCategoryExistance(menuCategoryId);

            List <Categories> categories = await CategoriesRepo.GetByMenuCategoryId(menuCategory.Id);

            foreach (var menuLang in menuLanguages)
            {
                bool checkName = categoryName.TryGetValue(menuLang.Id, out string name);
                categoryDescription.TryGetValue(menuLang.Id, out string description);

                if (!checkName)
                {
                    name = "<< no name >>";
                }

                Categories cat = categories.Where(x => x.MenuLanguageId == menuLang.Id).SingleOrDefault();
                if (cat == null)
                {
                    cat = new Categories
                    {
                        CategoryName        = name,
                        CategoryDescription = description,
                        MenuCategoryId      = menuCategory.Id,
                        MenuLanguageId      = menuLang.Id
                    };

                    categories.Add(cat);
                    await CategoriesRepo.AddAsync(cat, this.ModifierId);
                }
                else
                {
                    cat.CategoryName        = name;
                    cat.CategoryDescription = description;

                    await CategoriesRepo.UpdateAsync(cat, this.ModifierId);
                }
            }

            return(menuCategory);
        }