public async Task <ActionResult <DailyMealInstanceModel> > GetMealsForDate(DateTime?date)
        {
            try
            {
                var result = (await _repository.GetMealsForDate(User.Claims.GetUserId(), date ?? DateTime.Now)).ToList();
                var meals  = result.Select(
                    p => new MealInstanceModel
                {
                    MealInstanceId = p.MealInstanceId,
                    GoalId         = p.Goal.GoalId,
                    Amount         = p.Amount,
                    Date           = p.Date,
                    Product        = new MealProductModel {
                        ProductId = p.Product.ProductId, Name = p.Product.Name
                    },
                    MealType = new MealTypeModel {
                        Id = p.MealType.MealTypeId, Name = p.MealType.Name
                    }
                });

                var goal = result.First().Goal;
                var norm = _calculator.CalculateDailyCaloriesNorm(
                    goal.WeightGoal,
                    goal.Height,
                    User.Claims.GetDateOfBirth(),
                    goal.StartDate,
                    User.Claims.GetIsMale()
                    );

                var response = new DailyMealInstanceModel
                {
                    DateTime  = (date ?? DateTime.Now),
                    Consumed  = await _repository.GetMealTotalsForDate(User.Claims.GetUserId(), date ?? DateTime.Now),
                    DailyNorm = norm,
                    Meals     = meals
                };

                return(response);
            }
            catch (DbException ex)
            {
                if (ex.Code == 50100)
                {
                    return(Forbid());
                }

                return(BadRequest(ex.Message));
            }
            catch (Exception)
            {
                return(StatusCode(500));
            }
        }
Exemple #2
0
 public DailyInfoViewModel(DailyMealInstanceModel selectedDailyMealInstance)
 {
     DailyLimit = selectedDailyMealInstance.DailyNorm;
     Consumed   = selectedDailyMealInstance.Consumed;
     Date       = selectedDailyMealInstance.DateTime;
 }