Completed
Push — master ( dcb410...e7354d )
by Stephen
07:30
created

Level::permissions()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 6
ccs 0
cts 5
cp 0
rs 9.4285
cc 1
eloc 3
nc 1
nop 0
crap 2
1
<?php
2
3
namespace z1haze\Acl\Models;
4
5
use Illuminate\Database\Eloquent\Model;
6
use z1haze\Acl\Traits\UserAndLevel;
7
8
/**
9
 * Class Level
10
 * @package z1haze\Acl\Models
11
 */
12
class Level extends Model
13
{
14
    protected $casts = ['id' => 'integer', 'rank' => 'integer'];
15
    protected $guarded = ['id', 'created_id', 'updated_at'];
16
17
    use UserAndLevel;
18
19
    /**
20
     * LEVEL
21
     * A Level has many users
22
     *
23
     * @return mixed
24
     */
25
    public function users()
26
    {
27
        return $this->hasMany(config('laravel-acl.user'));
28
    }
29
30
    /**
31
     * LEVEL
32
     * A level has many permissions
33
     *
34
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
35
     */
36
    public function permissions()
37
    {
38
        $model = config('laravel-acl.permission', Permission::class);
39
40
        return $this->hasMany($model);
41
    }
42
43
44
    /* ------------------------------------------------------------------------------------------------
45
     |  Other Functions
46
     | ------------------------------------------------------------------------------------------------
47
     */
48
    /**
49
     * Handle model events
50
     */
51
    public static function boot()
52
    {
53
        parent::boot();
54
55
        static::deleting(function ($level) {
56
            $level->permissions()->where('level_id', $level->id)->update(['level_id' => null]);
57
            foreach ($level->users as $user) {
58
                $user->level()->dissociate()->save();
59
            }
60
        });
61
    }
62
}
63