Passed
Push — master ( 84d8cc...8a2fee )
by Mike
02:47
created

Messenger::getValueOrDefault()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 3
nc 3
nop 3
dl 0
loc 7
rs 9.2
c 0
b 0
f 0
1
<?php namespace GeneaLabs\LaravelMessenger;
2
3
use Illuminate\View\View;
4
5
class Messenger
6
{
7
    public function deliver() : View
8
    {
9
        $framework = session('genealabs-laravel-messenger.framework');
10
        $type = session('genealabs-laravel-messenger.type');
11
        $autoHide = session('genealabs-laravel-messenger.autoHide');
12
        $title = session('genealabs-laravel-messenger.title');
13
        $message = session('genealabs-laravel-messenger.message');
14
        $level = session('genealabs-laravel-messenger.level');
15
        $section = config('genealabs-laravel-messenger.javascript-blade-section');
16
17
        session()->forget('genealabs-laravel-messenger.autoHide');
18
        session()->forget('genealabs-laravel-messenger.framework');
19
        session()->forget('genealabs-laravel-messenger.level');
20
        session()->forget('genealabs-laravel-messenger.message');
21
        session()->forget('genealabs-laravel-messenger.title');
22
        session()->forget('genealabs-laravel-messenger.type');
23
24
        if (! $framework || ! $type) {
25
            return view("genealabs-laravel-messenger::empty");
26
        }
27
28
        return view("genealabs-laravel-messenger::{$framework}.{$type}")->with([
29
            'autoHide' => $autoHide,
30
            'message' => $message,
31
            'level' => $level,
32
            'section' => $section,
33
            'title' => $title,
34
        ]);
35
    }
36
37
    public function send(
38
        string $message,
39
        string $title = null,
40
        string $level = null,
41
        bool $autoHide = null,
42
        string $framework = null,
43
        string $type = null
44
    ) {
45
        $framework = $this->getValueOrDefault(
46
            $framework,
47
            config('genealabs-laravel-messenger.framework')
48
        );
49
        $level = $this->getValueOrDefault(
50
            $level,
51
            'info',
52
            ['info', 'success', 'warning', 'danger']
53
        );
54
        $type = $this->getValueOrDefault($type, 'alert', ['alert', 'modal']);
55
56
        session([
57
            'genealabs-laravel-messenger.autoHide' => $autoHide,
58
            'genealabs-laravel-messenger.framework' => $framework,
59
            'genealabs-laravel-messenger.level' => $level,
60
            'genealabs-laravel-messenger.message' => $message,
61
            'genealabs-laravel-messenger.title' => $title,
62
            'genealabs-laravel-messenger.type' => $type,
63
        ]);
64
    }
65
66
    protected function getValueOrDefault($value, $default, array $haystack = [])
67
    {
68
        if (count($haystack)) {
69
            return in_array($value, $haystack) ? $value : $default;
70
        }
71
72
        return $value ?: $default;
73
    }
74
}
75