public Menu Compare(Menu existingMenu, Menu menuToCompare) { if (existingMenu != null && menuToCompare != null && existingMenu.MenuParts != null && menuToCompare.MenuParts != null) { foreach (var menuPart in menuToCompare.MenuParts) { foreach (var existMenuPart in existingMenu.MenuParts) { // If same if(MenuPartCompare.Compare(existMenuPart, menuPart)) { } } } } return null; }
/// <summary> /// Should find DefaultMenuRestaurant with same cuisine and return it's Menu /// </summary> /// <param name="?"></param> /// <returns></returns> public Menu GetDefaulMenuByCuisine(string cuisine) { if (cuisine != null && cuisine != "") { //Try to find single menu DefaultMenuRestaurant DefaultMenuRestaurant defRest = GetDefaultRestaurantByCuisine(cuisine); Menu returnMenu = new Menu(); if (defRest != null) // Single menu default restaurant { { returnMenu = defRest.Menu; } } else { //Try to find multiple menus DefaultMenuRestaurant DefaultMenuRestaurant multiDefRest = GetMultiDefaultRestaurantByCuisine(cuisine); if (multiDefRest != null && multiDefRest.Cuisines != null && !multiDefRest.Cuisines.Any(c => c == "") && multiDefRest.Cuisines.Count > 1) { List<string> cuisinesList = multiDefRest.Cuisines; cuisinesList.RemoveAll(c => c == cuisine); if (cuisinesList.Count > 0) { returnMenu = GetDefaultMenuFromCuisinesList(cuisinesList); } if (multiDefRest.Menu != null && multiDefRest.Menu.MenuParts != null && multiDefRest.Menu.MenuParts.Count > 0) { returnMenu = CombineMenus(new List<Menu>() { returnMenu, multiDefRest.Menu }); } } } int menuPartsCount = returnMenu != null && returnMenu.MenuParts != null ? returnMenu.MenuParts.Count : 0; log.InfoFormat("[GetDefaulMenuByCuisine] Menu found for cuisine={0}, returned menu parts count={1}.", cuisine, menuPartsCount); if ( menuPartsCount > 0 ) return returnMenu; else { log.WarnFormat("[GetDefaulMenuByCuisine] Menu NOT found for cuisine={0}, default menu restaurant not found.", cuisine); } } else { log.ErrorFormat("[GetDefaulMenuByCuisine] cuisine is null or empty."); } return null; }
public Menu CombineMenus(List<Menu> menuList) { if (menuList != null) { log.InfoFormat("[CombineMenus] menuList.Count={0}.", menuList.Count); if (menuList.Count == 1) return menuList[0]; int menuPartCount = 0; Menu returnMenu = new Menu(); foreach (var menu in menuList) { foreach (var menuPart in menu.MenuParts) { if (!returnMenu.MenuParts.Exists(m => m.Name == menuPart.Name)) { menuPart.Id = menuPartCount++; returnMenu.MenuParts.Add(menuPart); } } } return returnMenu; } else { log.WarnFormat("[CombineMenus] menuList is null.", menuList.Count); return null; } }
public void GetDishModelTest_ShouldReturnRestaurantModelWithDishModelBackOfficeIfCalledWithRestaurantModelBackOfficeParameter() { Dish dish1 = new Dish() { Name = "TempDish1", Description = "description", Id = 1, NutritionFacts = new NutritionFacts(), BaseLineNutritionFacts = new NutritionFacts() }; Dish dish2 = new Dish() { Name = "TempDish2", Description = "description", Id = 2, NutritionFacts = new NutritionFacts(), BaseLineNutritionFacts = new NutritionFacts() }; Dish dish3 = new Dish() { Name = "TempDish3", Description = "description", Id = 3, NutritionFacts = new NutritionFacts(), BaseLineNutritionFacts = new NutritionFacts() }; Dish dish4 = new Dish() { Name = "TempDish4", Description = "description", Id = 4, NutritionFacts = new NutritionFacts(), BaseLineNutritionFacts = new NutritionFacts() }; var dishList1 = new List<Dish>(); dishList1.Add(dish1); dishList1.Add(dish2); var dishList2 = new List<Dish>(); dishList2.Add(dish3); dishList2.Add(dish4); MenuPart menuPart1 = new MenuPart() { Name = "TestMenuPart", Id = 1, OrderBy = 1, Dishes = dishList1 }; MenuPart menuPart2 = new MenuPart() { Name = "TestMenuPart", Id = 2, OrderBy = 2, Dishes = dishList1 }; List<MenuPart> menuPartsList = new List<MenuPart>(); menuPartsList.Add(menuPart1); menuPartsList.Add(menuPart2); Menu menu = new Menu(); menu.MenuParts.Add(menuPart1); menu.MenuParts.Add(menuPart2); RestaurantBasicData restBasic = new RestaurantBasicData() { Name = "TestRest", Id = new ObjectId(), Menu = menu }; RestaurantModelBackOffice restBO = new RestaurantModelBackOffice(); var restModel = restBasic.ToRestaurantModel(true, "he", restBO); foreach (var menuPart in restModel.Menu.MenuParts) { foreach (DishModel dishModel in menuPart.Dishes) { Assert.IsTrue(dishModel.GetType() == typeof(DishModelBackOffice)); } } }
public bool findMenuPart(Menu menu, MenuPart menuPart) { return false; }
//====================================================================================================================== public static Menu ToMenuBasicModel(this MenuModel MenuData) { if (MenuData == null) return new Menu(); Menu returnValue = new Menu() { MenuParts = ToMenuPartsBasicModel(MenuData.MenuParts) }; return returnValue; }
public void ToRestaurantModel_ShouldConvertMenuToMenuModel_AllDishesAndMenusNamesToSpecificLanguage() { //arrange RestaurantBasicData rest = new RestaurantBasicData() { Name = "מסעדה", Description = "מסעדת נסיון", LocalizedName = new Localized("he", "מסעדה"), LocalizedDescription = new Localized("he", "מסעדת נסיון") }; rest.LocalizedName.AddDescription("en-US", "restaurant"); rest.LocalizedDescription.AddDescription("en-US", "test restaurant"); Dish dish1 = new Dish() { Id = 111, Name = "אורז לבן", Description = "אורז לבן מבושל", LocalizedName = new Localized("he", "אורז לבן"), LocalizedDescription = new Localized("he", "אורז לבן מבושל"), DefaultWeight = new WeightType() { Desc = "100 גרם", LocalizedDescription = new Localized("he", "100 גרם") } }; dish1.LocalizedName.AddDescription("en-US", "white rice"); dish1.LocalizedDescription.AddDescription("en-US", "cooked white rice"); dish1.DefaultWeight.LocalizedDescription.AddDescription("en-US", "100 gramm"); Dish dish2 = new Dish() { Id = 222, Name = "תפוח אדמה", Description = "תפוח אדמה אפוי", LocalizedName = new Localized("he", "תפוח אדמה"), LocalizedDescription = new Localized("he", "תפוח אדמה אפוי"), DefaultWeight = new WeightType() { Desc = "100 גרם", LocalizedDescription = new Localized("he", "200 גרם") } }; dish2.LocalizedName.AddDescription("en-US", "Potato"); dish2.LocalizedDescription.AddDescription("en-US", "Baked Potato"); dish2.DefaultWeight.LocalizedDescription.AddDescription("en-US", "200 gramm"); Menu menu = new Menu() { Id = 1, MenuParts = new List<MenuPart>() }; MenuPart menuPart = new MenuPart(){ Id = 1, Name = "תוספות", LocalizedName = new Localized("he", "תוספות"), Dishes = new List<Dish>() }; menuPart.LocalizedName.AddDescription("en-US", "garnish"); menuPart.Dishes.Add(dish1); menuPart.Dishes.Add(dish2); menu.MenuParts.Add(menuPart); rest.Menu = menu; //act RestaurantModel restModelDefault = rest.ToRestaurantModel(); RestaurantModel restModelHe = rest.ToRestaurantModel(true, "he"); RestaurantModel restModelEn = rest.ToRestaurantModel(true, "en-US"); RestaurantModel restModelUknown = rest.ToRestaurantModel(true, "123"); //Assert Assert.AreEqual(restModelDefault.Language, "he"); Assert.AreEqual(restModelDefault.Name, "מסעדה"); Assert.AreEqual(restModelDefault.Description, "מסעדת נסיון"); Assert.AreEqual(restModelHe.Language, "he"); Assert.AreEqual(restModelHe.Name, "מסעדה"); Assert.AreEqual(restModelHe.Description, "מסעדת נסיון"); Assert.AreEqual(restModelEn.Language, "en-US"); Assert.AreEqual(restModelEn.Name, "restaurant"); Assert.AreEqual(restModelEn.Description, "test restaurant"); Assert.AreEqual(restModelUknown.Language, "123"); Assert.AreEqual(restModelUknown.Name, "מסעדה"); Assert.AreEqual(restModelUknown.Description, "מסעדת נסיון"); Assert.AreEqual(restModelDefault.Menu.MenuParts[0].Language, "he"); Assert.AreEqual(restModelDefault.Menu.MenuParts[0].Name, "תוספות"); Assert.AreEqual(restModelEn.Menu.MenuParts[0].Language, "en-US"); Assert.AreEqual(restModelEn.Menu.MenuParts[0].Name, "garnish"); Assert.AreEqual(restModelHe.Menu.MenuParts[0].Language, "he"); Assert.AreEqual(restModelHe.Menu.MenuParts[0].Name, "תוספות"); Assert.AreEqual(restModelDefault.Menu.MenuParts[0].Dishes[0].Name, "אורז לבן"); Assert.AreEqual(restModelDefault.Menu.MenuParts[0].Dishes[0].DefaultWeight.Desc, "100 גרם"); Assert.AreEqual(restModelDefault.Menu.MenuParts[0].Dishes[1].Name, "תפוח אדמה"); Assert.AreEqual(restModelDefault.Menu.MenuParts[0].Dishes[1].DefaultWeight.Desc, "200 גרם"); Assert.AreEqual(restModelHe.Menu.MenuParts[0].Dishes[0].Name, "אורז לבן"); Assert.AreEqual(restModelHe.Menu.MenuParts[0].Dishes[0].DefaultWeight.Desc, "100 גרם"); Assert.AreEqual(restModelHe.Menu.MenuParts[0].Dishes[1].Name, "תפוח אדמה"); Assert.AreEqual(restModelHe.Menu.MenuParts[0].Dishes[1].DefaultWeight.Desc, "200 גרם"); Assert.AreEqual(restModelEn.Menu.MenuParts[0].Dishes[0].Name, "white rice"); Assert.AreEqual(restModelEn.Menu.MenuParts[0].Dishes[0].DefaultWeight.Desc, "100 gramm"); Assert.AreEqual(restModelEn.Menu.MenuParts[0].Dishes[1].Name, "Potato"); Assert.AreEqual(restModelEn.Menu.MenuParts[0].Dishes[1].DefaultWeight.Desc, "200 gramm"); }
public void ToMenuModel_ShouldConvertMenuToMenuModel_AllDishesAndMenusNamesToSpecificLanguage() { //arrange Dish dish1 = new Dish() { Id = 111, Name = "אורז לבן", Description = "אורז לבן מבושל", LocalizedName = new Localized("he", "אורז לבן"), LocalizedDescription = new Localized("he", "אורז לבן מבושל"), DefaultWeight = new WeightType() { Desc = "100 גרם", LocalizedDescription = new Localized("he", "100 גרם") } }; dish1.LocalizedName.AddDescription("en-US", "white rice"); dish1.LocalizedDescription.AddDescription("en-US", "cooked white rice"); dish1.DefaultWeight.LocalizedDescription.AddDescription("en-US", "100 gramm"); Dish dish2 = new Dish() { Id = 222, Name = "תפוח אדמה", Description = "תפוח אדמה אפוי", LocalizedName = new Localized("he", "תפוח אדמה"), LocalizedDescription = new Localized("he", "תפוח אדמה אפוי"), DefaultWeight = new WeightType() { Desc = "100 גרם", LocalizedDescription = new Localized("he", "200 גרם") } }; dish2.LocalizedName.AddDescription("en-US", "Potato"); dish2.LocalizedDescription.AddDescription("en-US", "Baked Potato"); dish2.DefaultWeight.LocalizedDescription.AddDescription("en-US", "200 gramm"); Menu menu = new Menu() { Id = 1, MenuParts = new List<MenuPart>() }; MenuPart menuPart = new MenuPart(){ Id = 1, Name = "תוספות", LocalizedName = new Localized("he", "תוספות"), Dishes = new List<Dish>() }; menuPart.LocalizedName.AddDescription("en-US", "garnish"); menuPart.Dishes.Add(dish1); menuPart.Dishes.Add(dish2); menu.MenuParts.Add(menuPart); //act MenuModel menuModelDefault = menu.ToMenuModel("2", "he"); MenuModel menuModelEn = menu.ToMenuModel("2", "en-US"); MenuModel menuModelHe = menu.ToMenuModel("2", "he"); //Assert Assert.AreEqual(menuModelDefault.MenuParts[0].Language, "he"); Assert.AreEqual(menuModelDefault.MenuParts[0].Name, "תוספות"); Assert.AreEqual(menuModelEn.MenuParts[0].Language, "en-US"); Assert.AreEqual(menuModelEn.MenuParts[0].Name, "garnish"); Assert.AreEqual(menuModelHe.MenuParts[0].Language, "he"); Assert.AreEqual(menuModelHe.MenuParts[0].Name, "תוספות"); Assert.AreEqual(menuModelDefault.MenuParts[0].Dishes[0].Name, "אורז לבן"); Assert.AreEqual(menuModelDefault.MenuParts[0].Dishes[0].DefaultWeight.Desc, "100 גרם"); Assert.AreEqual(menuModelDefault.MenuParts[0].Dishes[1].Name, "תפוח אדמה"); Assert.AreEqual(menuModelDefault.MenuParts[0].Dishes[1].DefaultWeight.Desc, "200 גרם"); Assert.AreEqual(menuModelHe.MenuParts[0].Dishes[0].Name, "אורז לבן"); Assert.AreEqual(menuModelHe.MenuParts[0].Dishes[0].DefaultWeight.Desc, "100 גרם"); Assert.AreEqual(menuModelHe.MenuParts[0].Dishes[1].Name, "תפוח אדמה"); Assert.AreEqual(menuModelHe.MenuParts[0].Dishes[1].DefaultWeight.Desc, "200 גרם"); Assert.AreEqual(menuModelEn.MenuParts[0].Dishes[0].Name, "white rice"); Assert.AreEqual(menuModelEn.MenuParts[0].Dishes[0].DefaultWeight.Desc, "100 gramm"); Assert.AreEqual(menuModelEn.MenuParts[0].Dishes[1].Name, "Potato"); Assert.AreEqual(menuModelEn.MenuParts[0].Dishes[1].DefaultWeight.Desc, "200 gramm"); }