Completed
Pull Request — master (#17)
by ARCANEDEV
04:31
created

OnlineUsersCountComposer::compose()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 4
ccs 0
cts 3
cp 0
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 2
1
<?php namespace Arcanesoft\Auth\ViewComposers\Dashboard;
2
3
use Arcanesoft\Auth\Models\User;
4
use Arcanesoft\Auth\ViewComposers\ViewComposer;
5
use Carbon\Carbon;
6
use Illuminate\Contracts\View\View;
7
8
/**
9
 * Class     OnlineUsersCountComposer
10
 *
11
 * @package  Arcanesoft\Auth\ViewComposers\Dashboard
12
 * @author   ARCANEDEV <[email protected]>
13
 */
14
class OnlineUsersCountComposer extends ViewComposer
15
{
16
    /* ------------------------------------------------------------------------------------------------
17
     |  Constants
18
     | ------------------------------------------------------------------------------------------------
19
     */
20
    const VIEW = 'auth::foundation._composers.dashboard.online-users-count-box';
21
22
    /* ------------------------------------------------------------------------------------------------
23
     |  Main Functions
24
     | ------------------------------------------------------------------------------------------------
25
     */
26
    /**
27
     * Compose the view.
28
     *
29
     * @param  \Illuminate\Contracts\View\View  $view
30
     */
31
    public function compose(View $view)
32
    {
33
        $view->with('onlineUsersCount', $this->getOnlineUsers()->count());
34
    }
35
36
    /* ------------------------------------------------------------------------------------------------
37
     |  Other Functions
38
     | ------------------------------------------------------------------------------------------------
39
     */
40
    /**
41
     * Get the online users.
42
     *
43
     * @return \Illuminate\Database\Eloquent\Collection
44
     */
45
    private function getOnlineUsers()
46
    {
47
        $date = Carbon::now()->subMinutes(
48
            config('arcanesoft.auth.track-activity.minutes', 5)
49
        );
50
51
        return $this->getCachedUsers()->filter(function (User $user) use ($date) {
52
            return ! is_null($user->last_activity) && $user->last_activity->gte($date);
53
        });
54
    }
55
}
56