void Ingridients::writeFood(QJsonObject& json, Food& food) const { PRINT_DEBUG("Writing food" << food.getName()); json["name"] = QString::fromStdString(food.getName()); json["mass"] = static_cast<qint64>(food.getMass()); json["price"] = static_cast<qint64>(food.getPrice()); json["measureType"] = static_cast<int>(food.getUnitType()); json["fats"] = static_cast<qint64>(food.getFats()); json["proteins"] = static_cast<qint64>(food.getProteins()); json["carbohydrates"] = static_cast<qint64>(food.getCarbohydrates()); json["calories"] = static_cast<qint64>(food.getCalories()); }
vector<Food> *Store::generateRecipe(string nutrient, int amount) { vector<Food> *recipe = new vector<Food>; if (amount <= 0) throw "We have yet to find any food item that has negative " + nutrient; if (nutrient == "fat") { int total = 0; int count = 0; while (total < amount && count < 20) { Food r = randomize(); if (r.getFat() + total < amount) { recipe->push_back(r); total += r.getFat(); } count++; } return recipe; } else if (nutrient == "calories") { int total = 0; int count = 0; while (total < amount && count < 20) { Food r = randomize(); if (r.getCalories() + total < amount) { recipe->push_back(r); total += r.getCalories(); } count++; } return recipe; } else if (nutrient == "protein") { int total = 0; int count = 0; while (total < amount && count < 20) { Food r = randomize(); if (r.getProtein() + total < amount) { recipe->push_back(r); total += r.getProtein(); } count++; } return recipe; } else if (nutrient == "fiber") { int total = 0; int count = 0; while (total < amount && count < 20) { Food r = randomize(); if (r.getFiber() + total < amount) { recipe->push_back(r); total += r.getFiber(); } count++; } return recipe; } else if (nutrient == "sugar") { int total = 0; int count = 0; while (total < amount && count < 20) { Food r = randomize(); if (r.getSugar() + total < amount) { recipe->push_back(r); total += r.getSugar(); } count++; } return recipe; } else if (nutrient == "carbohydrates") { int total = 0; int count = 0; while (total < amount && count < 20) { Food r = randomize(); if (r.getCarbohydrates() + total < amount) { recipe->push_back(r); total += r.getCarbohydrates(); } count++; } return recipe; } throw string( "Sadly, we do not have enough information about your nutrient and " "therefore can not generate a recipe"); return nullptr; }