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

Level   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 4
c 0
b 0
f 0
lcom 0
cbo 2
dl 0
loc 51
ccs 0
cts 19
cp 0
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A users() 0 4 1
A permissions() 0 6 1
A boot() 0 11 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