public IEnumerable <DailyMeals> AddOrUpdateDailyMeal(string userId, AddOrRemoveDailyMealRequest dailyMeal) { var userExists = _users.Find(x => x.Id == userId).FirstOrDefault(); if (userExists == null) { return(null); } var dateExists = userExists.DailyMealsList.FirstOrDefault(x => x.Date == dailyMeal.Date); FilterDefinition <User> filter; UpdateDefinition <User> update; User result; if (dateExists == null) { filter = Builders <User> .Filter.Eq(x => x.Id, userId); update = Builders <User> .Update.Push(x => x.DailyMealsList, new DailyMeals { Date = dailyMeal.Date, MealsList = new List <Meal> { dailyMeal.Meal } }); } else { filter = Builders <User> .Filter.Where(x => x.Id == userId && x.DailyMealsList.Any(i => i.Date == dailyMeal.Date)); update = Builders <User> .Update.Push(x => x.DailyMealsList[-1].MealsList, dailyMeal.Meal); } result = _users.FindOneAndUpdateExtAfter(filter, update); return(result?.DailyMealsList); }
public ServiceResponse RemoveDailyMeal(string userId, AddOrRemoveDailyMealRequest request) { try { var result = _userRepository.RemoveDailyMeal(userId, request); if (result == null) { return(ServiceResponse.Failed()); } return(ServiceResponse.Succeeded()); } catch (Exception ex) { _logger.LogCritical(ex.ToString()); return(ServiceResponse.Failed()); } }
public IEnumerable <DailyMeals> RemoveDailyMeal(string userId, AddOrRemoveDailyMealRequest dailyMeal) { var filter = Builders <User> .Filter.Where(x => x.Id == userId && x.DailyMealsList.Any(i => i.Date == dailyMeal.Date)); var update = Builders <User> .Update.PullFilter(x => x.DailyMealsList[-1].MealsList, Builders <Meal> .Filter.Eq(x => x.Id, dailyMeal.Meal.Id)); var result = _users.FindOneAndUpdateExtAfter(filter, update); if (!result.DailyMealsList.FirstOrDefault(x => x.Date == dailyMeal.Date).MealsList.Any()) { filter = Builders <User> .Filter.Eq(x => x.Id, userId); update = Builders <User> .Update.PullFilter(x => x.DailyMealsList, Builders <DailyMeals> .Filter.Eq(x => x.Date, dailyMeal.Date)); var removeResult = _users.FindOneAndUpdateExtAfter(filter, update); } return(result?.DailyMealsList); }
public IActionResult RemoveDailyMeal([FromBody] AddOrRemoveDailyMealRequest request) { HttpContext.Request.Headers.TryGetValue(AppSettings.AuthenticationHeader, out var jwtValues); string jwtToken = jwtValues.FirstOrDefault(); if (!JwtHelper.IsJwtValid(jwtToken, _jwtTokenSettings.TokenKey, _jwtTokenSettings.Issuer, out var user)) { return(Unauthorized()); } if (user == null) { return(Unauthorized()); } if (request == null) { return(BadRequest()); } var result = _mealsService.RemoveDailyMeal(user.Id, request); return(result.IsSuccess ? new OkResult() : StatusCode(StatusCodes.Status500InternalServerError)); }