Completed
Pull Request — master (#34)
by Fèvre
05:50 queued 02:49
created

MentionNotification::parseInstance()   B

Complexity

Conditions 4
Paths 4

Size

Total Lines 33
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 33
rs 8.5806
c 0
b 0
f 0
cc 4
eloc 21
nc 4
nop 1
1
<?php
2
namespace Xetaravel\Notifications;
3
4
use Illuminate\Bus\Queueable;
5
use Illuminate\Contracts\Queue\ShouldQueue;
6
use Illuminate\Notifications\Notification;
7
use Xetaravel\Models\Article;
8
use Xetaravel\Models\Comment;
9
use Xetaravel\Models\DiscussPost;
10
11
class MentionNotification extends Notification implements ShouldQueue
12
{
13
    use Queueable;
14
15
    /**
16
     * The model instance.
17
     *
18
     * @var \Xetaravel\Models\Model
19
     */
20
    public $model;
21
22
    /**
23
     * Create a new notification instance.
24
     *
25
     * @param \Xetaravel\Models\Model $model
26
     */
27
    public function __construct($model)
28
    {
29
        $this->model = $model;
30
    }
31
32
    /**
33
     * Get the notification's delivery channels.
34
     *
35
     * @param mixed $notifiable
36
     *
37
     * @return array
38
     */
39
    public function via($notifiable): array
0 ignored issues
show
Unused Code introduced by
The parameter $notifiable is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
40
    {
41
        return ['database'];
42
    }
43
44
    /**
45
     * Get the array representation of the notification.
46
     *
47
     * @param mixed $notifiable
48
     *
49
     * @return array
50
     */
51
    public function toDatabase($notifiable): array
0 ignored issues
show
Unused Code introduced by
The parameter $notifiable is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
52
    {
53
        return $this->parseInstance(['type' => 'mention']);
54
    }
55
56
    /**
57
     * Parse the instance of the model and build the array.
58
     *
59
     * @param array $data
60
     *
61
     * @return array
62
     */
63
    protected function parseInstance(array $data = [])
64
    {
65
        $model = $this->model;
66
67
        switch (true) {
68
            case $model instanceof DiscussPost:
69
                $data['message'] = '<strong>@%s</strong> has mentionned your name in his post !';
70
                $data['link'] = $model->post_url;
71
72
                break;
73
74
            case $model instanceof Comment:
75
                $data['message'] = '<strong>@%s</strong> has mentionned your name in his comment !';
76
                $data['link'] = $model->comment_url;
77
78
                break;
79
80
            case $model instanceof Article:
81
                $data['message'] = '<strong>@%s</strong> has mentionned your name in his article !';
82
                $data['link'] = $model->article_url;
83
84
                break;
85
86
            default:
87
                $data['message'] = 'Unknown mention.';
88
                $data['link'] = route('users.notification.index');
89
90
                break;
91
        }
92
        $data['message'] = sprintf($data['message'], $model->user->username);
93
94
        return $data;
95
    }
96
}
97