示例#1
0
        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);
        }
示例#2
0
        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());
            }
        }
示例#3
0
        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);
        }
示例#4
0
        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));
        }