示例#1
0
        protected override void ExecuteRequest(HttpContext context)
        {
            (bool isOk, User user) = CheckClaimsForUser(Request, context, _userRepository);
            if (!isOk || user == null)
            {
                return;
            }

            FoodEntry foodEntryData = _foodEntryRepository.Insert(new FoodEntry()
            {
                UserId = user.Id,
                OpenFoodFactsDataId = Request.OFFDataId,
                Datetime            = DateTime.Now
            }).GetAwaiter().GetResult();

            if (foodEntryData != null)
            {
                var offData = _offDataRepository.Get(foodEntryData.OpenFoodFactsDataId).GetAwaiter().GetResult().FirstOrDefault();

                // update all quests based on datas
                var quests = _questRepository.Get(user, _questTypeRepository, InProgress).GetAwaiter().GetResult();
                foreach (var quest in quests)
                {
                    var questHandler = QuestHandlers.Create(quest, user, _questTypeRepository);
                    questHandler.Update("Calories", (foodEntryData.Servings * offData.EnergyServing).ToString());
                    _questRepository.Update(quest).GetAwaiter().GetResult();
                }

                string foodEntryJson = JsonSerializer.Serialize(foodEntryData);
                context.Response.StatusCode = StatusCodes.Status200OK;
                context.Response.WriteAsync(foodEntryJson).GetAwaiter().GetResult();
            }
            else
            {
                context.Response.StatusCode = StatusCodes.Status204NoContent;
            }
        }
示例#2
0
        public async Task <OpenFoodFactsData> GetOFFDataByOFFCategory(OpenFoodFactsDatasCategory dataCategory)
        {
            var openFoodFactsDatas = await _oFFDataRepository.Get(dataCategory.DataId);

            return(openFoodFactsDatas.FirstOrDefault());
        }