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