コード例 #1
0
        public IActionResult UpdateRow(Guid mealId, Guid id, [FromBody] AddMealRowRequest request)
        {
            if (!request.MealId.HasValue)
            {
                return(BadRequest());
            }
            var meal = nutritionRepository.GetMeal(request.MealId.Value);

            if (meal == null)
            {
                return(NotFound());
            }
            if (meal.UserId != CurrentUserId)
            {
                return(Unauthorized());
            }

            var row = meal.Rows.FirstOrDefault(r => r.Id == id);

            if (row == null)
            {
                return(NotFound());
            }
            row.FoodId    = request.FoodId;
            row.Quantity  = request.Quantity;
            row.PortionId = request.PortionId;
            row.Nutrients = null;
            CalculateNutrients(meal);

            nutritionRepository.UpdateMealRow(row);

            var result = AutoMapper.Mapper.Map <MealRowModel>(row);

            return(Ok(result));
        }
コード例 #2
0
        public IActionResult AddRow([FromBody] AddMealRowRequest request)
        {
            var dayStart = DateTimeUtils.ToLocal(request.Date).Date;
            var dayEnd   = dayStart.AddDays(1).AddMilliseconds(-1);
            var mealRow  = new MealRow
            {
                FoodId    = request.FoodId,
                Quantity  = request.Quantity,
                PortionId = request.PortionId
            };
            MealDetails meal;

            if (request.MealId.HasValue)
            {
                meal = nutritionRepository.GetMeal(request.MealId.Value);
            }
            else if (request.MealDefinitionId.HasValue)
            {
                meal = nutritionRepository.SearchMeals(CurrentUserId, dayStart, dayEnd).FirstOrDefault(m => m.DefinitionId == request.MealDefinitionId);
            }
            else
            {
                return(BadRequest());
            }
            if (meal == null)
            {
                if (request.MealId.HasValue)
                {
                    return(NotFound());
                }
                else if (request.MealDefinitionId.HasValue)
                {
                    var def = nutritionRepository.GetMealDefinitions(CurrentUserId).Single(d => d.Id == request.MealDefinitionId.Value);
                    if (def == null)
                    {
                        return(BadRequest());
                    }

                    meal = new MealDetails
                    {
                        UserId       = CurrentUserId,
                        DefinitionId = def.Id,
                        Created      = DateTimeOffset.Now,
                        Time         = DateTimeUtils.CreateLocal(dayStart, def.Time),
                        Rows         = new MealRow[] { }
                    };
                }
            }
            if (meal.UserId != CurrentUserId)
            {
                return(Unauthorized());
            }
            mealRow.MealId = meal.Id;
            meal.Rows      = meal.Rows.Union(new[] { mealRow }).ToArray();
            CalculateNutrients(meal);
            if (meal.Id == Guid.Empty)
            {
                nutritionRepository.CreateMeal(meal);
            }
            else
            {
                nutritionRepository.CreateMealRow(mealRow, meal.Rows.Length - 1);
            }

            var result = AutoMapper.Mapper.Map <MealRowModel>(mealRow);

            return(Ok(result));
        }