Passed
Branch master (cd4548)
by Fèvre
19:36
created

DiscussController   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 17
dl 0
loc 43
rs 10
c 1
b 0
f 0
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A index() 0 10 1
A leaderboard() 0 19 1
1
<?php
2
namespace Xetaravel\Http\Controllers\Discuss;
3
4
use Illuminate\Database\Eloquent\Builder;
5
use Illuminate\Support\Facades\Cache;
6
use Illuminate\View\View;
7
use Xetaravel\Models\DiscussConversation;
8
use Xetaravel\Models\User;
9
10
class DiscussController extends Controller
11
{
12
    /**
13
     * Display all conversations.
14
     *
15
     * @return \Illuminate\View\View
16
     */
17
    public function index(): View
18
    {
19
        $conversations = DiscussConversation::with('User', 'Category', 'FirstPost', 'LastPost')
20
            ->orderBy('is_pinned', 'desc')
21
            ->orderBy('created_at', 'desc')
22
            ->paginate(config('xetaravel.pagination.discuss.conversation_per_page'));
23
24
        $breadcrumbs = $this->breadcrumbs;
25
26
        return view('Discuss::index', compact('breadcrumbs', 'conversations'));
27
    }
28
29
    /**
30
     * Display the Leaderboard.
31
     *
32
     * @return \Illuminate\View\View
33
     */
34
    public function leaderboard(): View
35
    {
36
37
        $secondes = 1; //config('badges.users.pillarofcommunity.cache_lifetime_in_secondes'); // 86400 -> 24H
38
39
        $users = Cache::remember('Badges.users.pillarofcommunity', $secondes, function () {
40
            $users = User::whereDoesntHave('roles', function (Builder $query) {
41
                $query->where('slug', 'banni'); // Select all user that does not have the role "banni"
42
            })
43
            ->orderBy('experiences_total', 'desc')
44
            ->limit(15)
45
            ->get();
46
47
            return $users;
48
        });
49
50
        $breadcrumbs = $this->breadcrumbs->addCrumb('Leaderboard', route('discuss.leaderboard'));
51
52
        return view('Discuss::leaderboard', compact('breadcrumbs', 'users'));
53
    }
54
}
55