LoggerObserver   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 67
rs 10
wmc 6
lcom 1
cbo 5

5 Methods

Rating   Name   Duplication   Size   Complexity  
A created() 0 4 1
A updated() 0 4 1
A deleted() 0 4 1
A restored() 0 4 1
A logEvent() 0 16 2
1
<?php
2
namespace App\Observers;
3
4
use App\Model\BaseModel;
5
use App\Model\Log;
6
use App\Common\Auth;
7
8
final class LoggerObserver extends BaseObserver
9
{
10
    /**
11
     * Listen to the BaseModel created event.
12
     *
13
     * @param  BaseModel  $model
14
     * @return void
15
     */
16
    public function created(BaseModel $model)
17
    {
18
        $this->logEvent('CREATE', $model);
19
    }
20
21
    /**
22
     * Listen to the BaseModel updated event.
23
     *
24
     * @param  BaseModel  $model
25
     * @return void
26
     */
27
    public function updated(BaseModel $model)
28
    {
29
        $this->logEvent('UPDATE', $model);
30
    }
31
32
    /**
33
     * Listen to the BaseModel deleted event.
34
     *
35
     * @param  BaseModel  $model
36
     * @return void
37
     */
38
    public function deleted(BaseModel $model)
39
    {
40
        $this->logEvent('DELETE', $model);
41
    }
42
43
    /**
44
     * Listen to the BaseModel restored event.
45
     *
46
     * @param  BaseModel  $model
47
     * @return void
48
     */
49
    public function restored(BaseModel $model)
50
    {
51
        $this->logEvent('RESTORE', $model);
52
    }
53
54
    /**
55
     * @param string $event
56
     * @param BaseModel $model
57
     */
58
    private function logEvent($event, BaseModel $model)
59
    {
60
        $user = Auth::getUser();
61
62
        if (!is_null($user)) {
63
64
            Log::create([
65
                'action'      => $event,
66
                'entity_id'   => $model->id,
67
                'entity_type' => get_class($model),
68
                'state'       => $model->toJson(),
69
                'created_by'  => $user->id,
70
            ]);
71
72
        }
73
    }
74
}