NotificationMiddleware::handle()   B
last analyzed

Complexity

Conditions 8
Paths 10

Size

Total Lines 31

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 31
rs 8.1795
cc 8
nc 10
nop 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Cortex\Foundation\Http\Middleware;
6
7
use Closure;
8
use Illuminate\Support\ViewErrorBag;
9
use Krucas\Notification\Middleware\NotificationMiddleware as Middleware;
10
11
class NotificationMiddleware extends Middleware
12
{
13
    /**
14
     * Handle an incoming request.
15
     *
16
     * @param \Illuminate\Http\Request $request
17
     * @param \Closure                 $next
18
     *
19
     * @return mixed
20
     */
21
    public function handle($request, Closure $next)
22
    {
23
        $containers = $this->session->get($this->key, []);
24
25
        if (count($containers) > 0) {
26
            foreach ($containers as $name => $messages) {
27
                /** @var \Krucas\Notification\Message $message */
28
                foreach ($messages as $message) {
29
                    $this->notification->container($name)->add($message->getType(), $message, false);
30
                }
31
            }
32
        }
33
34
        foreach (config('notification.default_types') as $type) {
35
            if ($request->session()->has($type)) {
36
                $message = $request->session()->get($type);
37
38
                if ($message instanceof ViewErrorBag) {
39
                    foreach ($message->messages() as $key => $values) {
40
                        $message = $values[0];
41
                    }
42
                }
43
44
                $this->notification->container(null)->add($type, $message, false);
45
            }
46
        }
47
48
        $this->session->forget($this->key);
49
50
        return $next($request);
51
    }
52
}
53