Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 65 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 1 |
ShortcutResolveService | |
0.00% |
0 / 65 |
|
0.00% |
0 / 3 |
110 | |
0.00% |
0 / 1 |
resolve_category | |
0.00% |
0 / 21 |
|
0.00% |
0 / 1 |
20 | |||
resolve_sub_categories_lv1 | |
0.00% |
0 / 22 |
|
0.00% |
0 / 1 |
12 | |||
resolve_sub_categories_lv2 | |
0.00% |
0 / 22 |
|
0.00% |
0 / 1 |
12 |
1 | <?php |
2 | |
3 | namespace App\Http\Services; |
4 | |
5 | use App\Http\Models\Shortcut; |
6 | use App\Http\Models\ShortcutCategory; |
7 | use App\Http\Models\ShortcutSubCategoryLv1; |
8 | use App\Http\Models\ShortcutSubCategoryLv2; |
9 | use Exception; |
10 | use Illuminate\Support\Facades\Cache; |
11 | use Illuminate\Support\Facades\DB; |
12 | use Illuminate\Support\Facades\Log; |
13 | |
14 | class ShortcutResolveService |
15 | { |
16 | public function resolve_category($id, $category_id) |
17 | { |
18 | $category = ShortcutCategory::find($id); |
19 | |
20 | if (! $category) { |
21 | abort(404, 'Category not found'); |
22 | } |
23 | |
24 | if ($category->is_default) { |
25 | abort(403, 'Cannot delete default category'); |
26 | } |
27 | |
28 | $session = DB::getMongoClient()->startSession(); |
29 | $session->startTransaction(); |
30 | |
31 | try { |
32 | Shortcut::where('category_id', $id)->update([ |
33 | 'category_id' => $category_id, |
34 | 'sub_categories_lv1_id' => null, |
35 | 'sub_categories_lv2_id' => null, |
36 | ]); |
37 | |
38 | $category->delete(); |
39 | |
40 | $userId = request()->user()->getKey(); |
41 | $obj = new ShortcutCategoryPositionService(); |
42 | $obj->removeCategoryPosition($userId, $id); |
43 | |
44 | $session->commitTransaction(); |
45 | } catch (Exception $e) { |
46 | Log::error($e->getMessage()); |
47 | abort(400, 'Error deleting category'); |
48 | $session->abortTransaction(); |
49 | } |
50 | } |
51 | |
52 | public function resolve_sub_categories_lv1($id, $default_category_id = '') |
53 | { |
54 | $sub_category_lvl_1 = ShortcutSubCategoryLv1::where([ |
55 | '_id' => $id, |
56 | 'user_id' => request()->user()->id, |
57 | ])->first(); |
58 | if (! $sub_category_lvl_1) { |
59 | abort(404, 'Category not found'); |
60 | } |
61 | |
62 | $session = DB::getMongoClient()->startSession(); |
63 | $session->startTransaction(); |
64 | |
65 | try { |
66 | Shortcut::where('sub_categories_lv1_id', $id)->update([ |
67 | 'category_id' => $sub_category_lvl_1->category_id, |
68 | 'sub_categories_lv1_id' => null, |
69 | 'sub_categories_lv2_id' => null, |
70 | ]); |
71 | |
72 | $res = $sub_category_lvl_1->delete(); |
73 | $userId = request()->user()->getKey(); |
74 | $obj = new ShortcutCategoryPositionServiceLv1(); |
75 | $obj->removeCategoryPosition($userId, $id); |
76 | $session->commitTransaction(); |
77 | } catch (Exception $e) { |
78 | Log::error($e->getMessage()); |
79 | abort(400, 'Error deleting category'); |
80 | $session->abortTransaction(); |
81 | } |
82 | } |
83 | |
84 | public function resolve_sub_categories_lv2($id, $default_category_id = '') |
85 | { |
86 | $sub_category_lvl_2 = ShortcutSubCategoryLv2::with('subCategoryLv1')->where([ |
87 | '_id' => $id, |
88 | 'user_id' => request()->user()->id, |
89 | ])->first(); |
90 | |
91 | if (! $sub_category_lvl_2) { |
92 | abort(404, 'Category not found'); |
93 | } |
94 | |
95 | $session = DB::getMongoClient()->startSession(); |
96 | $session->startTransaction(); |
97 | |
98 | try { |
99 | Shortcut::where('sub_categories_lv2_id', $id)->update([ |
100 | 'category_id' => $sub_category_lvl_2->subCategoryLv1->category_id, |
101 | 'sub_categories_lv1_id' => $sub_category_lvl_2->subCategoryLv1->id, |
102 | 'sub_categories_lv2_id' => null, |
103 | ]); |
104 | |
105 | $sub_category_lvl_2->delete(); |
106 | |
107 | $userId = request()->user()->getKey(); |
108 | $obj = new ShortcutCategoryPositionServiceLv2(); |
109 | $obj->removeCategoryPosition($userId, $id); |
110 | $session->commitTransaction(); |
111 | } catch (Exception $e) { |
112 | Log::error($e->getMessage()); |
113 | abort(400, 'Error deleting category'); |
114 | $session->abortTransaction(); |
115 | } |
116 | } |
117 | } |