Passed
Push — master ( 9aa048...898b5e )
by Mattia
04:05
created

AccountStats   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 85
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 27
dl 0
loc 85
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getMostWanted() 0 8 1
A getLastUsers() 0 8 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Minepic\Models;
6
7
use DB;
8
use Illuminate\Database\Eloquent\Model;
9
10
/**
11
 * Class AccountsStats.
12
 *
13
 * @property string         $uuid
14
 * @property int            $count_request
15
 * @property \Carbon\Carbon $request_at
16
 *
17
 * @method static \Illuminate\Database\Eloquent\Builder|AccountStats newModelQuery()
18
 * @method static \Illuminate\Database\Eloquent\Builder|AccountStats newQuery()
19
 * @method static \Illuminate\Database\Eloquent\Builder|AccountStats query()
20
 * @mixin \Eloquent
21
 */
22
class AccountStats extends Model
23
{
24
    /**
25
     * Table name.
26
     *
27
     * @var string
28
     */
29
    protected $table = 'accounts_stats';
30
31
    /**
32
     * Primary key.
33
     *
34
     * @var string
35
     */
36
    protected $primaryKey = 'uuid';
37
38
    /**
39
     * No primary key.
40
     *
41
     * @var bool
42
     */
43
    public $incrementing = false;
44
45
    /**
46
     * @var bool
47
     */
48
    public $timestamps = false;
49
50
    /** @var string[] */
51
    public $dates = [
52
        'request_at',
53
    ];
54
55
    /** @var string[] */
56
    public $casts = [
57
        'uuid' => 'string',
58
        'count_request' => 'int',
59
        'request_at' => 'datetime',
60
    ];
61
62
    /**
63
     * @var array
64
     */
65
    protected $fillable = [
66
        'uuid',
67
        'count_request',
68
        'request_at',
69
    ];
70
71
    /**
72
     * Get most wanted users.
73
     *
74
     * @param int $limit
75
     *
76
     * @return mixed
77
     */
78
    public static function getMostWanted(int $limit = 14)
79
    {
80
        return DB::select(
81
            "SELECT a.`uuid`, a.`username`, s.`count_request`
82
             FROM (
83
              SELECT `uuid`, `count_request` FROM `accounts_stats`
84
              ORDER BY `count_request` DESC
85
              LIMIT {$limit}
86
            ) s
87
            INNER JOIN `accounts` AS a USING(`uuid`)
88
            ORDER BY s.`count_request` DESC"
89
        );
90
    }
91
92
    /**
93
     * Get last users.
94
     *
95
     * @param int $limit
96
     *
97
     * @return mixed
98
     */
99
    public static function getLastUsers(int $limit = 9)
100
    {
101
        return DB::select(
102
            "SELECT a.`uuid`, a.`username`, s.`count_request`
103
              FROM (
104
                SELECT `uuid`, `count_request` FROM `accounts_stats`
105
                ORDER BY `request_at` DESC
106
                LIMIT {$limit}
107
              ) s
108
            INNER JOIN `accounts` a USING(`uuid`)
109
            ORDER BY s.`count_request` DESC"
110
        );
111
    }
112
}
113