Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 109 |
|
0.00% |
0 / 16 |
CRAP | |
0.00% |
0 / 1 |
ApiBillTypeController | |
0.00% |
0 / 109 |
|
0.00% |
0 / 16 |
1122 | |
0.00% |
0 / 1 |
apiBillTypeCreate | |
0.00% |
0 / 8 |
|
0.00% |
0 / 1 |
6 | |||
createBillTypeFromRequest | |
0.00% |
0 / 12 |
|
0.00% |
0 / 1 |
12 | |||
validateBillTypeCreate | |
0.00% |
0 / 5 |
|
0.00% |
0 / 1 |
12 | |||
apiBillTypeL11nCreate | |
0.00% |
0 / 8 |
|
0.00% |
0 / 1 |
6 | |||
createBillTypeL11nFromRequest | |
0.00% |
0 / 7 |
|
0.00% |
0 / 1 |
2 | |||
validateBillTypeL11nCreate | |
0.00% |
0 / 5 |
|
0.00% |
0 / 1 |
12 | |||
apiBillTypeUpdate | |
0.00% |
0 / 9 |
|
0.00% |
0 / 1 |
6 | |||
updateBillTypeFromRequest | |
0.00% |
0 / 8 |
|
0.00% |
0 / 1 |
6 | |||
validateBillTypeUpdate | |
0.00% |
0 / 4 |
|
0.00% |
0 / 1 |
6 | |||
apiBillTypeDelete | |
0.00% |
0 / 8 |
|
0.00% |
0 / 1 |
6 | |||
validateBillTypeDelete | |
0.00% |
0 / 4 |
|
0.00% |
0 / 1 |
6 | |||
apiBillTypeL11nUpdate | |
0.00% |
0 / 9 |
|
0.00% |
0 / 1 |
6 | |||
updateBillTypeL11nFromRequest | |
0.00% |
0 / 6 |
|
0.00% |
0 / 1 |
2 | |||
validateBillTypeL11nUpdate | |
0.00% |
0 / 4 |
|
0.00% |
0 / 1 |
6 | |||
apiBillTypeL11nDelete | |
0.00% |
0 / 8 |
|
0.00% |
0 / 1 |
6 | |||
validateBillTypeL11nDelete | |
0.00% |
0 / 4 |
|
0.00% |
0 / 1 |
6 |
1 | <?php |
2 | |
3 | /** |
4 | * Jingga |
5 | * |
6 | * PHP Version 8.1 |
7 | * |
8 | * @package Modules\Billing |
9 | * @copyright Dennis Eichhorn |
10 | * @license OMS License 2.0 |
11 | * @version 1.0.0 |
12 | * @link https://jingga.app |
13 | */ |
14 | declare(strict_types=1); |
15 | |
16 | namespace Modules\Billing\Controller; |
17 | |
18 | use Modules\Billing\Models\BillTransferType; |
19 | use Modules\Billing\Models\BillType; |
20 | use Modules\Billing\Models\BillTypeL11nMapper; |
21 | use Modules\Billing\Models\BillTypeMapper; |
22 | use Modules\Media\Models\NullCollection; |
23 | use phpOMS\Localization\BaseStringL11n; |
24 | use phpOMS\Localization\ISO639x1Enum; |
25 | use phpOMS\Message\Http\RequestStatusCode; |
26 | use phpOMS\Message\RequestAbstract; |
27 | use phpOMS\Message\ResponseAbstract; |
28 | |
29 | /** |
30 | * Billing class. |
31 | * |
32 | * @package Modules\Billing |
33 | * @license OMS License 2.0 |
34 | * @link https://jingga.app |
35 | * @since 1.0.0 |
36 | */ |
37 | final class ApiBillTypeController extends Controller |
38 | { |
39 | /** |
40 | * Api method to create item bill type |
41 | * |
42 | * @param RequestAbstract $request Request |
43 | * @param ResponseAbstract $response Response |
44 | * @param array $data Generic data |
45 | * |
46 | * @return void |
47 | * |
48 | * @api |
49 | * |
50 | * @since 1.0.0 |
51 | */ |
52 | public function apiBillTypeCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void |
53 | { |
54 | if (!empty($val = $this->validateBillTypeCreate($request))) { |
55 | $response->header->status = RequestStatusCode::R_400; |
56 | $this->createInvalidCreateResponse($request, $response, $val); |
57 | |
58 | return; |
59 | } |
60 | |
61 | $billType = $this->createBillTypeFromRequest($request); |
62 | $this->createModel($request->header->account, $billType, BillTypeMapper::class, 'bill_type', $request->getOrigin()); |
63 | $this->createStandardCreateResponse($request, $response, $billType); |
64 | } |
65 | |
66 | /** |
67 | * Method to create item attribute from request. |
68 | * |
69 | * @param RequestAbstract $request Request |
70 | * |
71 | * @return BillType |
72 | * |
73 | * @since 1.0.0 |
74 | */ |
75 | private function createBillTypeFromRequest(RequestAbstract $request) : BillType |
76 | { |
77 | $billType = new BillType($request->getDataString('name') ?? ''); |
78 | $billType->setL11n($request->getDataString('title') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN); |
79 | $billType->numberFormat = $request->getDataString('number_format') ?? '{id}'; |
80 | $billType->transferStock = $request->getDataBool('transfer_stock') ?? false; |
81 | $billType->isTemplate = $request->getDataBool('is_template') ?? false; |
82 | $billType->transferType = $request->getDataInt('transfer_type') ?? BillTransferType::SALES; |
83 | $billType->defaultTemplate = $request->hasData('template') |
84 | ? new NullCollection((int) $request->getData('template')) |
85 | : null; |
86 | |
87 | if ($request->hasData('template')) { |
88 | $billType->addTemplate(new NullCollection((int) $request->getData('template'))); |
89 | } |
90 | |
91 | return $billType; |
92 | } |
93 | |
94 | /** |
95 | * Validate item attribute create request |
96 | * |
97 | * @param RequestAbstract $request Request |
98 | * |
99 | * @return array<string, bool> |
100 | * |
101 | * @since 1.0.0 |
102 | */ |
103 | private function validateBillTypeCreate(RequestAbstract $request) : array |
104 | { |
105 | $val = []; |
106 | if (($val['title'] = !$request->hasData('title')) |
107 | || ($val['name'] = !$request->hasData('name')) |
108 | ) { |
109 | return $val; |
110 | } |
111 | |
112 | return []; |
113 | } |
114 | |
115 | /** |
116 | * Api method to create item attribute l11n |
117 | * |
118 | * @param RequestAbstract $request Request |
119 | * @param ResponseAbstract $response Response |
120 | * @param array $data Generic data |
121 | * |
122 | * @return void |
123 | * |
124 | * @api |
125 | * |
126 | * @since 1.0.0 |
127 | */ |
128 | public function apiBillTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void |
129 | { |
130 | if (!empty($val = $this->validateBillTypeL11nCreate($request))) { |
131 | $response->header->status = RequestStatusCode::R_400; |
132 | $this->createInvalidCreateResponse($request, $response, $val); |
133 | |
134 | return; |
135 | } |
136 | |
137 | $billTypeL11n = $this->createBillTypeL11nFromRequest($request); |
138 | $this->createModel($request->header->account, $billTypeL11n, BillTypeL11nMapper::class, 'bill_type_l11n', $request->getOrigin()); |
139 | $this->createStandardCreateResponse($request, $response, $billTypeL11n); |
140 | } |
141 | |
142 | /** |
143 | * Method to create item attribute l11n from request. |
144 | * |
145 | * @param RequestAbstract $request Request |
146 | * |
147 | * @return BaseStringL11n |
148 | * |
149 | * @since 1.0.0 |
150 | */ |
151 | private function createBillTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n |
152 | { |
153 | $billTypeL11n = new BaseStringL11n(); |
154 | $billTypeL11n->ref = $request->getDataInt('type') ?? 0; |
155 | $billTypeL11n->setLanguage( |
156 | $request->getDataString('language') ?? $request->header->l11n->language |
157 | ); |
158 | $billTypeL11n->content = $request->getDataString('title') ?? ''; |
159 | |
160 | return $billTypeL11n; |
161 | } |
162 | |
163 | /** |
164 | * Validate item attribute l11n create request |
165 | * |
166 | * @param RequestAbstract $request Request |
167 | * |
168 | * @return array<string, bool> |
169 | * |
170 | * @since 1.0.0 |
171 | */ |
172 | private function validateBillTypeL11nCreate(RequestAbstract $request) : array |
173 | { |
174 | $val = []; |
175 | if (($val['title'] = !$request->hasData('title')) |
176 | || ($val['type'] = !$request->hasData('type')) |
177 | ) { |
178 | return $val; |
179 | } |
180 | |
181 | return []; |
182 | } |
183 | |
184 | /** |
185 | * Api method to update BillType |
186 | * |
187 | * @param RequestAbstract $request Request |
188 | * @param ResponseAbstract $response Response |
189 | * @param array $data Generic data |
190 | * |
191 | * @return void |
192 | * |
193 | * @api |
194 | * |
195 | * @since 1.0.0 |
196 | */ |
197 | public function apiBillTypeUpdate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void |
198 | { |
199 | if (!empty($val = $this->validateBillTypeUpdate($request))) { |
200 | $response->header->status = RequestStatusCode::R_400; |
201 | $this->createInvalidUpdateResponse($request, $response, $val); |
202 | |
203 | return; |
204 | } |
205 | |
206 | /** @var BillType $old */ |
207 | $old = BillTypeMapper::get()->where('id', (int) $request->getData('id')); |
208 | $new = $this->updateBillTypeFromRequest($request, clone $old); |
209 | |
210 | $this->updateModel($request->header->account, $old, $new, BillTypeMapper::class, 'bill_type', $request->getOrigin()); |
211 | $this->createStandardUpdateResponse($request, $response, $new); |
212 | } |
213 | |
214 | /** |
215 | * Method to update BillType from request. |
216 | * |
217 | * @param RequestAbstract $request Request |
218 | * @param BillType $new Model to modify |
219 | * |
220 | * @return BillType |
221 | * |
222 | * @todo: implement |
223 | * |
224 | * @since 1.0.0 |
225 | */ |
226 | public function updateBillTypeFromRequest(RequestAbstract $request, BillType $new) : BillType |
227 | { |
228 | $new->numberFormat = $request->getDataString('number_format') ?? $new->numberFormat; |
229 | $new->transferStock = $request->getDataBool('transfer_stock') ?? $new->transferStock; |
230 | $new->isTemplate = $request->getDataBool('is_template') ?? $new->isTemplate; |
231 | $new->transferType = $request->getDataInt('transfer_type') ?? $new->transferType; |
232 | $new->defaultTemplate = $request->hasData('template') |
233 | ? new NullCollection((int) $request->getData('template')) |
234 | : $new->defaultTemplate; |
235 | |
236 | return $new; |
237 | } |
238 | |
239 | /** |
240 | * Validate BillType update request |
241 | * |
242 | * @param RequestAbstract $request Request |
243 | * |
244 | * @return array<string, bool> |
245 | * |
246 | * @todo: implement |
247 | * |
248 | * @since 1.0.0 |
249 | */ |
250 | private function validateBillTypeUpdate(RequestAbstract $request) : array |
251 | { |
252 | $val = []; |
253 | if (($val['id'] = !$request->hasData('id'))) { |
254 | return $val; |
255 | } |
256 | |
257 | return []; |
258 | } |
259 | |
260 | /** |
261 | * Api method to delete BillType |
262 | * |
263 | * @param RequestAbstract $request Request |
264 | * @param ResponseAbstract $response Response |
265 | * @param array $data Generic data |
266 | * |
267 | * @return void |
268 | * |
269 | * @api |
270 | * |
271 | * @since 1.0.0 |
272 | */ |
273 | public function apiBillTypeDelete(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void |
274 | { |
275 | if (!empty($val = $this->validateBillTypeDelete($request))) { |
276 | $response->header->status = RequestStatusCode::R_400; |
277 | $this->createInvalidDeleteResponse($request, $response, $val); |
278 | |
279 | return; |
280 | } |
281 | |
282 | /** @var \Modules\Billing\Models\BillType $billType */ |
283 | $billType = BillTypeMapper::get()->where('id', (int) $request->getData('id'))->execute(); |
284 | $this->deleteModel($request->header->account, $billType, BillTypeMapper::class, 'bill_type', $request->getOrigin()); |
285 | $this->createStandardDeleteResponse($request, $response, $billType); |
286 | } |
287 | |
288 | /** |
289 | * Validate BillType delete request |
290 | * |
291 | * @param RequestAbstract $request Request |
292 | * |
293 | * @return array<string, bool> |
294 | * |
295 | * @since 1.0.0 |
296 | */ |
297 | private function validateBillTypeDelete(RequestAbstract $request) : array |
298 | { |
299 | $val = []; |
300 | if (($val['id'] = !$request->hasData('id'))) { |
301 | return $val; |
302 | } |
303 | |
304 | return []; |
305 | } |
306 | |
307 | /** |
308 | * Api method to update BillTypeL11n |
309 | * |
310 | * @param RequestAbstract $request Request |
311 | * @param ResponseAbstract $response Response |
312 | * @param array $data Generic data |
313 | * |
314 | * @return void |
315 | * |
316 | * @api |
317 | * |
318 | * @since 1.0.0 |
319 | */ |
320 | public function apiBillTypeL11nUpdate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void |
321 | { |
322 | if (!empty($val = $this->validateBillTypeL11nUpdate($request))) { |
323 | $response->header->status = RequestStatusCode::R_400; |
324 | $this->createInvalidUpdateResponse($request, $response, $val); |
325 | |
326 | return; |
327 | } |
328 | |
329 | /** @var BaseStringL11n $old */ |
330 | $old = BillTypeL11nMapper::get()->where('id', (int) $request->getData('id')); |
331 | $new = $this->updateBillTypeL11nFromRequest($request, clone $old); |
332 | |
333 | $this->updateModel($request->header->account, $old, $new, BillTypeL11nMapper::class, 'bill_type_l11n', $request->getOrigin()); |
334 | $this->createStandardUpdateResponse($request, $response, $new); |
335 | } |
336 | |
337 | /** |
338 | * Method to update BillTypeL11n from request. |
339 | * |
340 | * @param RequestAbstract $request Request |
341 | * @param BaseStringL11n $new Model to modify |
342 | * |
343 | * @return BaseStringL11n |
344 | * |
345 | * @since 1.0.0 |
346 | */ |
347 | public function updateBillTypeL11nFromRequest(RequestAbstract $request, BaseStringL11n $new) : BaseStringL11n |
348 | { |
349 | $new->ref = $request->getDataInt('type') ?? $new->ref; |
350 | $new->setLanguage( |
351 | $request->getDataString('language') ?? $new->language |
352 | ); |
353 | $new->content = $request->getDataString('title') ?? $new->content; |
354 | |
355 | return $new; |
356 | } |
357 | |
358 | /** |
359 | * Validate BillTypeL11n update request |
360 | * |
361 | * @param RequestAbstract $request Request |
362 | * |
363 | * @return array<string, bool> |
364 | * |
365 | * @since 1.0.0 |
366 | */ |
367 | private function validateBillTypeL11nUpdate(RequestAbstract $request) : array |
368 | { |
369 | $val = []; |
370 | if (($val['id'] = !$request->hasData('id'))) { |
371 | return $val; |
372 | } |
373 | |
374 | return []; |
375 | } |
376 | |
377 | /** |
378 | * Api method to delete BillTypeL11n |
379 | * |
380 | * @param RequestAbstract $request Request |
381 | * @param ResponseAbstract $response Response |
382 | * @param array $data Generic data |
383 | * |
384 | * @return void |
385 | * |
386 | * @api |
387 | * |
388 | * @since 1.0.0 |
389 | */ |
390 | public function apiBillTypeL11nDelete(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void |
391 | { |
392 | if (!empty($val = $this->validateBillTypeL11nDelete($request))) { |
393 | $response->header->status = RequestStatusCode::R_400; |
394 | $this->createInvalidDeleteResponse($request, $response, $val); |
395 | |
396 | return; |
397 | } |
398 | |
399 | /** @var BaseStringL11n $billTypeL11n */ |
400 | $billTypeL11n = BillTypeL11nMapper::get()->where('id', (int) $request->getData('id'))->execute(); |
401 | $this->deleteModel($request->header->account, $billTypeL11n, BillTypeL11nMapper::class, 'bill_type_l11n', $request->getOrigin()); |
402 | $this->createStandardDeleteResponse($request, $response, $billTypeL11n); |
403 | } |
404 | |
405 | /** |
406 | * Validate BillTypeL11n delete request |
407 | * |
408 | * @param RequestAbstract $request Request |
409 | * |
410 | * @return array<string, bool> |
411 | * |
412 | * @since 1.0.0 |
413 | */ |
414 | private function validateBillTypeL11nDelete(RequestAbstract $request) : array |
415 | { |
416 | $val = []; |
417 | if (($val['id'] = !$request->hasData('id'))) { |
418 | return $val; |
419 | } |
420 | |
421 | return []; |
422 | } |
423 | } |