public void EqualsTest() { var target = new MenuModel(); var obj = new MenuModel(); Assert.IsTrue(target.Equals(obj)); Assert.IsFalse(target.Equals(null)); var parentMenuModel = new MenuModel(); target.Parent = parentMenuModel; obj.Parent = parentMenuModel; Assert.IsTrue(target.Equals(obj)); }
//User updates menu public async Task UpdateMenuAsync(UserModel user, MenuModel menu, List <int> mealIds) { if (user.Position == (int)UserPosition.HasNotHome) { CustomException errors = new CustomException((int)HttpStatusCode.BadRequest); errors.AddError("Home Not Exist", "User is not member of a home"); errors.Throw(); } if (menu.Date.Kind != DateTimeKind.Utc) { CustomException errors = new CustomException((int)HttpStatusCode.BadRequest); errors.AddError("Date Not Valid", "Date is not valid, please convert to UTC"); errors.Throw(); } menu.Date = menu.Date.AddHours(-menu.Date.Hour); menu.Date = menu.Date.AddMinutes(-menu.Date.Minute); menu.Date = menu.Date.AddSeconds(-menu.Date.Second); menu.Date = menu.Date.AddMilliseconds(-menu.Date.Millisecond); user = await _userRepository.GetByIdAsync(user.Id, true); HomeModel home = await _homeRepository.GetByIdAsync(user.Home.Id, true); MenuModel tmp1 = await _menuRepository.GetHomeMenuByIdAsync(menu.Id, true); MenuModel tmp2 = await _menuRepository.GetHomeMenuByDateAsync(home.Id, menu.Date, true); if (tmp1 == null) { CustomException errors = new CustomException((int)HttpStatusCode.BadRequest); errors.AddError("Menu Id Not Valid", "Menu id not valid, that day has not menu"); errors.Throw(); } if (tmp2 == null) { CustomException errors = new CustomException((int)HttpStatusCode.BadRequest); errors.AddError("Date Not Valid", "Date is not valid, that day has not related menu"); errors.Throw(); } if (!tmp1.Equals(tmp2)) { CustomException errors = new CustomException((int)HttpStatusCode.BadRequest); errors.AddError("Date Not Valid", "Date is not valid, menu id and date does not match"); errors.Throw(); } mealIds = mealIds.Distinct().ToList(); if (mealIds.Count == 0) { CustomException errors = new CustomException((int)HttpStatusCode.BadRequest); errors.AddError("Menu Has Not Meal", "There is no meals for this menu"); errors.Throw(); } //Finds meals that are not related home foreach (var mealId in mealIds) { MealModel meal = await _mealRepository.GetHomeMealByIdAsync(mealId, true); if ((meal == null) || (meal.Home.Id != home.Id)) { CustomException errors = new CustomException((int)HttpStatusCode.BadRequest); errors.AddError("Meal Not Related Home", "This meal is not related with user home"); errors.Throw(); } } //Finds and deletes old menu meals List <MenuMealModel> oldMenuMeals = await _menuMealRepository.GetAllMenuMealsByMenuIdAsync(menu.Id); foreach (var menuMeals in oldMenuMeals) { _menuMealRepository.Delete(menuMeals); } //Inserts new menu meal to database foreach (var mealId in mealIds) { MealModel meal = await _mealRepository.GetHomeMealByIdAsync(mealId, true); MenuMealModel menuMeal = new MenuMealModel(menu, meal); _menuMealRepository.Insert(menuMeal); } //Sends fcm to all users foreach (var friend in home.Users) { FCMModel fcm = new FCMModel(friend.DeviceId, type: "UpdateMenu"); fcm.data.Add("Menu", menu); fcm.data.Add("MealIds", mealIds); await _fcmService.SendFCMAsync(fcm); } }