delete(); } public function getById($id) { $user = User::find($id); return $user; } public function getWhereEquals($field, $actual) { return User::where($field, $actual); } public function saveRecipe(int $userID, int $recipeID) { return UsersRecipes::create(['user_id' => $userID, 'recipe_id' => $recipeID]); } public function getRecipeHistory(int $userID, string $groupBy = 'day') { $userRecipes = UsersRecipes::where('user_id', $userID)->orderBy('created_at')->get(); $recipeHistory = []; if ($groupBy == 'month') { $userRecipes = $userRecipes->groupBy(function ($d) { return Carbon::parse($d->created_at)->format('Y-m'); }); } else { $userRecipes = $userRecipes->groupBy(function ($d) { return Carbon::parse($d->created_at)->format('Y-m-d'); }); } foreach ($userRecipes as $date => $dateRecipes) { $nutritionSum = [ 'kcal' => 0, 'carbohydrates' => 0, 'protein' => 0, 'fat' => 0, ]; foreach($dateRecipes as $userRecipe){ $nutritionValues = $userRecipe->recipe->nutrition; foreach($nutritionValues as $name => $value){ $nutritionSum[$name] += $value; } } foreach($nutritionSum as $k => $v){ $nutritionSum[$k] = round($v, 2); } $recipeHistory[] = array_merge(['date' => $date], $nutritionSum); } return $recipeHistory; } }