mirror of
https://github.com/brunofontes/shareit.git
synced 2024-11-24 04:14:57 +00:00
Bruno Fontes
8ae1e92a63
It was necessary to keep refreshing the page to check if an item was returned when we did not want to be alerted. So, now, the page refresh itself every 2 minutes (while I do not know how to use Laravel broadcasting) and the title shows the number of items in use (including when used by you).
82 lines
1.9 KiB
PHP
82 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use \App\User;
|
|
|
|
class HomeController extends Controller
|
|
{
|
|
protected $activeUsers = [];
|
|
|
|
/**
|
|
* Create a new controller instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$this->middleware('auth');
|
|
}
|
|
|
|
|
|
/**
|
|
* Show the application dashboard.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function index()
|
|
{
|
|
$items = User::loggedIn()->items()->with('users')->get();
|
|
|
|
$numberOfUsedItems = 0;
|
|
foreach ($items as $item) {
|
|
if (isset($item->used_by)) {
|
|
$numberOfUsedItems++;
|
|
}
|
|
$this->getUsername($item->users, $item->used_by);
|
|
$this->getUsername($item->users, $item->waiting_user_id);
|
|
}
|
|
|
|
$products = $items
|
|
->sortBy('product.name', SORT_NATURAL | SORT_FLAG_CASE)
|
|
->groupBy('product.name');
|
|
|
|
return view(
|
|
'home',
|
|
['products' => $products, 'users' => $this->activeUsers, 'usedItems' => $numberOfUsedItems]
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Get the username from an specified user id.
|
|
*
|
|
* @param object $itemUsers Array with IDs and usernames
|
|
* @param int $id The user id to search for
|
|
*
|
|
* @return void
|
|
*/
|
|
public function getUsername(object $itemUsers, ?int $id)
|
|
{
|
|
if ($id && !isset($this->activeUsers[$id])) {
|
|
$this->activeUsers[$id] = $this->findName($itemUsers, $id);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 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;
|
|
}
|
|
}
|
|
}
|
|
}
|