From b40a9fa3f11e301c3e97ed5fb17e8ebfb8862a16 Mon Sep 17 00:00:00 2001 From: Bruno Fontes Date: Sat, 15 Sep 2018 00:05:24 -0300 Subject: [PATCH] Refactoring HomeController Avoiding requests to DB --- app/Http/Controllers/HomeController.php | 32 +++++++++++++++++++------ 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 0c77010..62e0460 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -17,6 +17,23 @@ class HomeController extends Controller $this->middleware('auth'); } + /** + * Get a name from a specific id in a array + * + * @param array $array The array of objects with ID and Names + * @param int $id The ID of the user + * + * @return string The username of the specified id + */ + protected function findName($array, $id) + { + foreach ($array as $object) { + if ($object->id == $id) { + return $object->name; + } + } + } + /** * Show the application dashboard. * @@ -24,15 +41,16 @@ class HomeController extends Controller */ public function index() { - $items = User::find(\Auth::id())->items()->get(); + $users = []; + $items = User::find(\Auth::id())->items()->with('users')->get(); + foreach ($items as $item) { + if ($item->used_by && !isset($users[$item->used_by])) { + $users[$item->used_by] = $this->findName($item->users, $item->used_by); + } - if ($item->used_by) { - $users[$item->used_by] = User::find($item->used_by)->name; - - if ($item->waiting_user_id) { - $users[$item->waiting_user_id] = User::find($item->waiting_user_id)->name; - } + if ($item->waiting_user_id && !isset($users[$item->waiting_user_id])) { + $users[$item->waiting_user_id] = $this->findName($item, $item->waiting_user_id); } } return view('home', compact('items', 'users'));