コード例 #1
0
        public async Task <DietModel> GetDietAsyc(DietParams @params)
        {
            var validation = await new DietParamValidator().ValidateAsync(@params);

            if (validation.Failed)
            {
                throw new ArgumentException(validation.Message);
            }

            var profile = await profileRepository.GetByUserIdAsync(@params.UserId);

            var plan = await planRepository.GetAsync(@params.PlanId);

            var foods = await foodRepository.ListAsync();

            var bmrValue               = GetBMRValue((double)profile.Weight, (double)profile.Height, profile.Age, (Gender)profile.Gender);
            var levelFactor            = GetActivityLevelValue(plan.ActivityLevel);
            var totalEnergyExpenditure = bmrValue * levelFactor;
            var calorieIntakePerDay    = totalEnergyExpenditure;

            if (plan.Goal == Goal.Change_Weight)
            {
                double requiredCalorieChangePerDay = GetTargetGainOrLossCaloriePerDay((int)plan.Pace, (double)plan.Target, (double)profile.Weight, plan.Duration);
                calorieIntakePerDay = GetCalorieIntakePerDay((double)plan.Target, (double)profile.Weight, requiredCalorieChangePerDay, totalEnergyExpenditure);
            }
            var foodList = GetFoodList(calorieIntakePerDay, DietFactory.ConvertToFoodModel(foods), profile.IsVeg);

            ShowDietOutput(foodList);//Testing Purpose Only

            return(DietFactory.CreateDiet(@params.UserId, @params.Date, plan.Id, calorieBalance, message, foodList));
        }
コード例 #2
0
        private DietParams GetDietParams()
        {
            var dietParams = new DietParams()
            {
                UserId = 1,
                PlanId = 3,
                Date   = DateTime.Now,
                Type   = (DietType)1
            };

            return(dietParams);
        }
コード例 #3
0
 public Task <IActionResult> ListAsync([FromQuery] DietParams parameters)
 {
     return(_dietService.GetDietAsyc(parameters).ResultAsync());
 }