Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 57
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
SyncShortcutController
0.00% covered (danger)
0.00%
0 / 57
0.00% covered (danger)
0.00%
0 / 1
90
0.00% covered (danger)
0.00%
0 / 1
 sync
0.00% covered (danger)
0.00%
0 / 57
0.00% covered (danger)
0.00%
0 / 1
90
1<?php
2
3namespace App\Http\Controllers\v1;
4
5use App\Http\Controllers\Controller;
6use App\Http\Helpers\QueryBuilder\RomeoQueryBuilder;
7use App\Http\Models\Setting;
8use App\Http\Models\Shortcut;
9use App\Http\Models\UserInfo;
10use Illuminate\Http\Request;
11
12class SyncShortcutController extends Controller
13{
14    public function sync(Request $request)
15    {
16        $userId = $request->user()->getKey();
17        $browser_type = strtolower($request->header('Browser-type'));
18
19        if ($request->header('Browser-type')) {
20            $browser_type = strtolower($request->header('Browser-type'));
21        }
22
23        if ($request->header('browser-type')) {
24            $browser_type = strtolower($request->header('browser-type'));
25        }
26
27        $userId = $request->user()->getKey();
28        $userInfo = UserInfo::where('user_id', $userId)->first();
29
30        $searchArray = ['user_id' => $userId];
31        $setting = Setting::where($searchArray)->first();
32        if (! $setting) {
33            $data = [
34                'user_id' => $userId,
35                'shortcut_timeout' => 5000,
36                'shortcut_version' => 1.000,
37                'blocked_domains' => [],
38            ];
39            Setting::create($data);
40            $setting = Setting::where($searchArray)->first();
41        }
42
43        if ($setting['shortcut_timeout']) {
44            $syncMap['shortcut_timeout'] = 5000;
45        } else {
46            $syncMap['shortcut_timeout'] = 5000;
47        }
48        if ($setting['shortcut_version']) {
49            $syncMap['shortcut_version'] = $setting->shortcut_version;
50        } else {
51            $syncMap['shortcut_version'] = 1.000;
52        }
53        if ($setting['blocked_domains']) {
54            $syncMap['blocked_domains'] = $setting->blocked_domains;
55        } else {
56            $syncMap['blocked_domains'] = [];
57        }
58
59        $browser = ucfirst($browser_type);
60
61        if ($userInfo) {
62            $userInfo->signed_into_flymsg_extension = 'Yes';
63            $userInfo->last_browser_used = $browser;
64            $userInfo->save();
65        }
66        $queryBuilder = new RomeoQueryBuilder(new Shortcut, $request);
67        $result = $queryBuilder->build()->get();
68        foreach ($result as $item) {
69            $string = str_replace('<p style="margin: 0; padding: 0; counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;"><span style="font-weight: 400;">&nbsp;</span></p>', '<br>', $item->text);
70            $string = str_replace('<p style="margin: 0; padding: 0; counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;">&nbsp;</p>', '<br>', $string);
71            $string = str_replace('<p style="margin: 0; padding: 0; counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;">&nbsp;</p>', '<br>', $string);
72            $string = str_replace('<p style="margin: 0; padding: 0; counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; background-color: #ffffff;">&nbsp;</p>', '<br>', $string);
73            $string = str_replace('<p style="margin: 0; padding: 0; counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; background-color: #ffffff;">', '', $string);
74            $string = str_replace('</p>', '<br>', $string);
75
76            // Normal Extra Space.
77            // $string = str_replace('<div><span', '<span', $string);
78            // $string = str_replace('</span></div>', '</span>', $string);
79
80            $syncMap['@'.$item->shortcut] = [
81                'id' => $item->id,
82                'text' => $string,
83                'html' => $item->html,
84                'title' => $item->title,
85                'shortcut' => $item->shortcut,
86            ];
87        }
88        $result = $syncMap;
89        // This works as a keys that control the extensions.
90        $counters = [
91            'Stop_linkedin_tutorial_done' => 0,
92            'Stop_gmail_tutorial_done' => 0,
93            'Stop_outlook_tutorial_done' => 0,
94        ];
95        // Convert the counters data to JSON format
96        $result['counters'] = $counters;
97
98        return response()->json($result);
99    }
100}