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)); }
private DietParams GetDietParams() { var dietParams = new DietParams() { UserId = 1, PlanId = 3, Date = DateTime.Now, Type = (DietType)1 }; return(dietParams); }
public Task <IActionResult> ListAsync([FromQuery] DietParams parameters) { return(_dietService.GetDietAsyc(parameters).ResultAsync()); }