Passed
Push — master ( b90a53...57255b )
by Clement
03:13
created

FeedbackController::gatherUserInfo()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nc 1
nop 1
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Mydnic\Kustomer\Http\Controllers;
4
5
use Illuminate\Http\Request;
6
use Illuminate\Validation\Rule;
7
use Illuminate\Routing\Controller;
8
use Mydnic\Kustomer\Feedback;
9
use Mydnic\Kustomer\Events\NewFeedback;
10
11
class FeedbackController extends Controller
12
{
13
    public function store(Request $request)
14
    {
15
        $data = $this->validates($request);
16
17
        $feedback = $this->storeFeedback($data, $request);
18
19
        $this->dispatchEvent($feedback);
20
21
        return response()->json([
22
            'created' => true
23
        ], 201);
24
    }
25
26
    private function validates(Request $request)
27
    {
28
        return $request->validate([
29
            'type' => [
30
                'required', Rule::in(array_keys(config('kustomer.feedbacks'))),
31
            ],
32
            'message' => 'required',
33
            'viewport' => 'array',
34
        ]);
35
    }
36
37
    private function storeFeedback($data, Request $request)
38
    {
39
        $feedback = new Feedback;
40
        $feedback->type = $data['type'];
41
        $feedback->message = $data['message'];
42
        $feedback->user_info = $this->gatherUserInfo($request);
43
        $feedback->save();
44
45
        return $feedback;
46
    }
47
48
    private function gatherUserInfo(Request $request)
49
    {
50
        return [
51
            'url' => $request->server('HTTP_REFERER'),
52
            'language' => $request->getPreferredLanguage(),
53
            'agent' => $request->server('HTTP_USER_AGENT'),
54
            'viewport' => $request->viewport
55
        ];
56
    }
57
58
    private function dispatchEvent(Feedback $feedback)
59
    {
60
        event(new NewFeedback($feedback));
61
    }
62
}
63