PluginProbe
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler / 1.4.1
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler v1.4.1
1.6.5 1.6.4 1.6.3 1.6.2 1.6.1 1.6.0 1.5.4 1.5.5 1.5.3 1.5.2 1.5.1 1.5.0 1.4.2 1.4.1 1.4.0 1.3.28 1.3.27 1.3.26 1.3.25 1.3.23 1.3.22 1.3.21 1.3.20 1.3.19 trunk All 48 releases
fluent-cart / app / Http / Controllers / AttributesController.php

AttributesController.php in FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler 1.4.1, at app/Http/Controllers/AttributesController.php

167 lines 4.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FluentCart\App\Http\Controllers;
4
5 use FluentCart\Api\Resource\AttrGroupResource;
6 use FluentCart\Api\Resource\AttrTermResource;
7 use FluentCart\App\Http\Requests\AttrGroupRequest;
8 use FluentCart\App\Http\Requests\AttrTermRequest;
9 use FluentCart\Framework\Http\Request\Request;
10 use FluentCart\Framework\Support\Arr;
11
12 class AttributesController extends Controller
13 {
14
15 /**
16 *
17 * @param Request $request
18 * @param $group_id
19 * @return array
20 */
21 public function getGroup(Request $request, $group_id): array
22 {
23
24 return ['group' => AttrGroupResource::find($group_id, $request->all())];
25 }
26
27
28 public function getGroups(Request $request)
29 {
30
31 return ['groups' => AttrGroupResource::get($request->all())];
32 }
33
34 public function createGroup(AttrGroupRequest $request)
35 {
36
37 $data = $request->getSafe($request->sanitize());
38 $arg = Arr::only($data, ['title', 'slug', 'settings', 'description']);
39 $isCreated = AttrGroupResource::create($arg);
40
41 if (is_wp_error($isCreated)) {
42 return $isCreated;
43 }
44 return $this->response->sendSuccess($isCreated);
45 }
46
47 /**
48 * Update attribute group info
49 *
50 * @param AttrGroupRequest $request
51 * @param $group_id
52 * @return mixed
53 */
54 public function updateGroup(AttrGroupRequest $request, $group_id)
55 {
56
57 $data = $request->getSafe($request->sanitize());
58 $arg = Arr::only($data, ['title', 'slug', 'settings', 'description']);
59 $isUpdated = AttrGroupResource::update($arg, $group_id);
60
61 if (is_wp_error($isUpdated)) {
62 return $isUpdated;
63 }
64 return $this->response->sendSuccess($isUpdated);
65
66 }
67
68 /**
69 * Delete a group only if the terms of the group is unused
70 *
71 * @param Request $request
72 * @param $group_id
73 * @return mixed
74 */
75 public function deleteGroup(Request $request, $group_id)
76 {
77
78 $isDeleted = AttrGroupResource::delete($group_id);
79
80 if (is_wp_error($isDeleted)) {
81 return $isDeleted;
82 }
83 return $this->response->sendSuccess($isDeleted);
84 }
85
86 public function getTerms(Request $request, $group_id): array
87 {
88
89 return ['terms' => AttrTermResource::get($request->all())];
90 }
91
92 public function createTerm(AttrTermRequest $request, $group_id)
93 {
94
95 $data = $request->getSafe($request->sanitize());
96 $isCreated = AttrTermResource::create($data, ['group_id' => $group_id]);
97
98 if (is_wp_error($isCreated)) {
99 return $isCreated;
100 }
101 return $this->response->sendSuccess($isCreated);
102 }
103
104 /**
105 *
106 * @param AttrTermRequest $request
107 * @param $group_id
108 * @param $term_id
109 * @return mixed
110 */
111 public function updateTerm(AttrTermRequest $request, $group_id, $term_id)
112 {
113
114 $data = $request->getSafe($request->sanitize());
115 $arg = Arr::only($data, ['title', 'slug', 'settings', 'serial', 'description']);
116 $isUpdated = AttrTermResource::update($arg, $term_id, ['group_id' => $group_id]);
117
118 if (is_wp_error($isUpdated)) {
119 return $isUpdated;
120 }
121 return $this->response->sendSuccess($isUpdated);
122 }
123
124 /**
125 *
126 * @param Request $request
127 * @param $group_id
128 * @param $term_id
129 * @return mixed
130 */
131 public function deleteTerm(Request $request, $group_id, $term_id)
132 {
133
134 $isDeleted = AttrTermResource::delete($term_id, ['group_id' => $group_id]);
135
136 if (is_wp_error($isDeleted)) {
137 return $isDeleted;
138 }
139 return $this->response->sendSuccess($isDeleted);
140 }
141
142 /**
143 * Update the serial of a term only
144 *
145 * @param Request $request
146 * @param $group_id
147 * @param $term_id
148 * @return mixed
149 */
150 public function changeTermSerial(Request $request, $group_id, $term_id)
151 {
152
153 $isUpdated = AttrTermResource::updateSerial([
154 'term_id' => $term_id,
155 'group_id' => $group_id,
156 'move' => $request->get('direction', 'up'),
157 ]);
158
159 if (is_wp_error($isUpdated)) {
160 return $isUpdated;
161 }
162 return $this->response->sendSuccess($isUpdated);
163 }
164 }
165
166
167