Passed
Push — task/comments-api ( a73e9b...cdddbd )
by Tristan
14:01 queued 11s
created

BreadcrumbsComposer::compose()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 15
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 10
c 1
b 0
f 0
dl 0
loc 15
rs 9.9332
cc 3
nc 3
nop 1
1
<?php
2
3
namespace App\Http\ViewComposers;
4
5
use Facades\App\Services\WhichPortal;
6
use Illuminate\View\View;
7
use Illuminate\Http\Request;
8
use Illuminate\Support\Facades\Lang;
9
10
class BreadcrumbsComposer
11
{
12
    /**
13
     * The request instance.
14
     *
15
     * @var \Illuminate\Http\Request
16
     */
17
    protected $request;
18
19
    /**
20
     * Initialize a new composer instance.
21
     *
22
     * @param  \Illuminate\Http\Request  $request
23
     * @return void
24
     */
25
    public function __construct(Request $request)
26
    {
27
        $this->request = $request;
28
    }
29
30
    /**
31
     * Bind data to the view.
32
     *
33
     * @param  \Illuminate\View\View  $view
34
     * @return void
35
     */
36
    public function compose(View $view)
37
    {
38
        $segments = $this->parseSegments();
39
        $breadcrumbs_lang = Lang::get('common/breadcrumbs')['applicant'];
40
41
        if (WhichPortal::isManagerPortal()) {
42
            $segments = $segments->slice(1);
43
            $breadcrumbs_lang = Lang::get('common/breadcrumbs')['manager'];
44
        } elseif (WhichPortal::isHrPortal()) {
45
            $segments = $segments->slice(1);
46
            $breadcrumbs_lang = Lang::get('common/breadcrumbs')['hr'];
47
        }
48
49
        $view->with('breadcrumbs', $segments);
50
        $view->with('breadcrumbs_lang', $breadcrumbs_lang);
51
    }
52
53
    /**
54
     * Parse the request route segments.
55
     *
56
     * @return \Illuminate\Support\Collection
57
     */
58
    protected function parseSegments()
59
    {
60
        return collect($this->request->segments())->mapWithKeys(function ($segment, $key) {
61
            return [
62
                $segment => implode('/', array_slice($this->request->segments(), 0, $key + 1)),
63
            ];
64
        });
65
    }
66
}
67