rinvex/cortex-foundation

View on GitHub
src/Http/Middleware/NotificationMiddleware.php

Summary

Maintainability
A
2 hrs
Test Coverage
<?php

declare(strict_types=1);

namespace Cortex\Foundation\Http\Middleware;

use Closure;
use Illuminate\Support\ViewErrorBag;
use Krucas\Notification\Middleware\NotificationMiddleware as BaseNotificationMiddleware;

class NotificationMiddleware extends BaseNotificationMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param \Illuminate\Http\Request $request
     * @param \Closure                 $next
     *
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $containers = $this->session->get($this->key, []);

        if (count($containers) > 0) {
            foreach ($containers as $name => $messages) {
                /** @var \Krucas\Notification\Message $message */
                foreach ($messages as $message) {
                    $this->notification->container($name)->add($message->getType(), strip_tags($message), false);
                }
            }
        }

        foreach (config('notification.default_types') as $type) {
            if ($request->session()->has($type)) {
                $message = $request->session()->get($type);

                if ($message instanceof ViewErrorBag) {
                    foreach ($message->messages() as $key => $values) {
                        $message = $values[0];
                    }
                }

                $this->notification->container(null)->add($type, strip_tags($message), false);
            }
        }

        $this->session->forget($this->key);

        return $next($request);
    }
}