22
33namespace API \Controllers ;
44
5- use ApiPlatform \Metadata \Operation ;
65use ApiPlatform \Metadata \Post ;
7- use ApiPlatform \State \ProcessorInterface ;
86use DTO \DataTablesLoadRequest \Column ;
97use DTO \DataTablesLoadRequest \DataTablesLoadRequest ;
108use DTO \DataTablesLoadResponse \DataTablesLoadResponse ;
119use Models \Module ;
1210use Util \Query ;
1311
12+ use Illuminate \Http \JsonResponse ;
13+ use Illuminate \Http \Request ;
14+
15+
1416#[Post(
1517 uriTemplate: '/datatables/list/{id_module}/{id_plugin}/{id_parent} ' ,
16- processor : DataTablesController::class,
18+ controller : DataTablesController::class,
1719 input: DataTablesLoadRequest::class,
1820 output: DataTablesLoadResponse::class,
1921)]
2022class DataTablesResource
2123{
2224}
2325
24- final class DataTablesController implements ProcessorInterface
26+ final class DataTablesController extends BaseController
2527{
26- public function process ( mixed $ data , Operation $ operation , array $ uriVariables = [], array $ context = [] ): DataTablesLoadResponse
28+ public function __invoke ( Request $ request ): JsonResponse
2729 {
28- if (!$ data instanceof DataTablesLoadRequest) {
30+ $ request_body = $ this ->_cast ($ request , DataTablesLoadRequest::class);
31+
32+ $ id_module = (int ) $ request_body ->getIdModule ();
33+ $ id_plugin = (int ) $ request_body ->getIdPlugin ();
34+ $ id_parent = (int ) $ request_body ->getIdParent ();
35+
36+ $ module = \Modules::get ($ id_module );
37+ \Modules::setCurrent ($ id_module );
38+
39+ $ plugin = null ;
40+ if (!empty ($ id_plugin )) {
41+ \Plugins::setCurrent ($ id_plugin );
42+ $ plugin = \Plugins::get ($ id_plugin );
43+ }
44+
45+ $ structure = $ plugin ?? $ module ;
46+
47+ return new JsonResponse ($ this ->retrieveRecords ($ structure , $ request_body , $ id_module , $ id_plugin , $ id_parent ));
48+ }
49+
50+ /*
51+ public function process(mixed $request, Operation $operation, array $uriVariables = [], array $context = []): DataTablesLoadResponse
52+ {
53+ if (!$request instanceof DataTablesLoadRequest) {
2954 throw new \InvalidArgumentException();
3055 }
3156
@@ -44,21 +69,23 @@ public function process(mixed $data, Operation $operation, array $uriVariables =
4469
4570 $structure = $plugin ?? $module;
4671
47- return $ this ->retrieveRecords ($ structure , $ data , $ id_module , $ id_plugin , $ id_parent );
48- }
72+ return $this->retrieveRecords($structure, $request , $id_module, $id_plugin, $id_parent);
73+ }*/
4974
50- private function retrieveRecords ($ structure , DataTablesLoadRequest $ data , $ id_module , $ id_plugin , $ id_parent ): DataTablesLoadResponse
75+ private function retrieveRecords ($ structure , DataTablesLoadRequest $ request , $ id_module , $ id_plugin , $ id_parent ): DataTablesLoadResponse
5176 {
5277 // Informazioni fondamentali
53- $ order = $ data ->order ? $ data ->order [0 ] : [];
78+ $ order = $ request ->order ? $ request ->order [0 ] : [];
5479
5580 if (!empty ($ order )) {
56- $ order[ ' column ' ] = $ order[ ' column ' ] - 1 ;
81+ $ order-> column = $ order-> column - 1 ;
5782 }
5883
84+ $ order_array = $ order ->toArray ();
85+
5986 $ query_structure = Query::readQuery ($ structure );
6087
61- $ response = new DataTablesLoadResponse ($ data ->draw );
88+ $ response = new DataTablesLoadResponse ($ request ->draw );
6289
6390 $ query = Query::getQuery ($ structure , [], [], [], $ query_structure );
6491 if (empty ($ query )) {
@@ -67,7 +94,7 @@ private function retrieveRecords($structure, DataTablesLoadRequest $data, $id_mo
6794
6895 // Ricerca
6996 $ search = [];
70- $ columns = $ data ->columns ;
97+ $ columns = $ request ->columns ;
7198 array_shift ($ columns );
7299 for ($ i = 0 ; $ i < count ($ columns ); ++$ i ) {
73100 $ col = Column::fromArray ($ columns [$ i ]);
@@ -80,7 +107,7 @@ private function retrieveRecords($structure, DataTablesLoadRequest $data, $id_mo
80107 $ response ->recordsTotal = database ()->fetchNum ($ query );
81108
82109 // CONTEGGIO RECORD FILTRATI (senza LIMIT)
83- $ query_filtered = Query::getQuery ($ structure , $ search , $ order , [], $ query_structure );
110+ $ query_filtered = Query::getQuery ($ structure , $ search , $ order_array , [], $ query_structure );
84111 if (empty ($ id_plugin )) {
85112 $ query_filtered = \Modules::replaceAdditionals ($ id_module , $ query_filtered );
86113 }
@@ -93,11 +120,11 @@ private function retrieveRecords($structure, DataTablesLoadRequest $data, $id_mo
93120 $ response ->avg = Query::getAverages ($ structure , $ search );
94121
95122 $ limit = [
96- 'start ' => $ data ->start ,
97- 'length ' => $ data ->length ,
123+ 'start ' => $ request ->start ,
124+ 'length ' => $ request ->length ,
98125 ];
99126 // RISULTATI VISIBILI (con LIMIT)
100- $ query = Query::getQuery ($ structure , $ search , $ order , $ limit , $ query_structure );
127+ $ query = Query::getQuery ($ structure , $ search , $ order_array , $ limit , $ query_structure );
101128
102129 // Filtri derivanti dai permessi (eventuali)
103130 if (empty ($ id_plugin )) {
@@ -154,17 +181,17 @@ private function getSingleRow($r, $query_structure, $align, $id_module, $id_plug
154181
155182 $ result = [
156183 'id ' => $ r ['id ' ],
157- '<span class="hide" data -id=" ' .$ r ['id ' ].'"></span> ' , // Colonna ID
184+ '<span class="hide" request -id=" ' .$ r ['id ' ].'"></span> ' , // Colonna ID
158185 ];
159186
160187 foreach ($ query_structure ['fields ' ] as $ pos => $ field ) {
161188 $ column = [];
162189
163190 if (!empty ($ r ['_bg_ ' ])) {
164191 if (preg_match ('/-light$/ ' , (string ) $ r ['_bg_ ' ])) {
165- $ column ['data -background ' ] = substr ((string ) $ r ['_bg_ ' ], 0 , -6 ); // Remove the "-light" suffix from the word
192+ $ column ['request -background ' ] = substr ((string ) $ r ['_bg_ ' ], 0 , -6 ); // Remove the "-light" suffix from the word
166193 } else {
167- $ column ['data -background ' ] = $ r ['_bg_ ' ];
194+ $ column ['request -background ' ] = $ r ['_bg_ ' ];
168195 }
169196 }
170197
@@ -211,7 +238,7 @@ private function getSingleRow($r, $query_structure, $align, $id_module, $id_plug
211238 }
212239
213240 $ column ['class ' ] = 'text-center small ' ;
214- $ column ['data -background ' ] = $ r [$ field ];
241+ $ column ['request -background ' ] = $ r [$ field ];
215242 }
216243
217244 // Icona di stampa
@@ -245,8 +272,8 @@ private function getSingleRow($r, $query_structure, $align, $id_module, $id_plug
245272 }
246273
247274 // Colore del testo
248- if (!empty ($ column ['data -background ' ])) {
249- $ column ['data -color ' ] ??= color_inverse (trim ((string ) $ column ['data -background ' ]));
275+ if (!empty ($ column ['request -background ' ])) {
276+ $ column ['request -color ' ] ??= color_inverse (trim ((string ) $ column ['request -background ' ]));
250277 } elseif (preg_match ('/^mailto_(.+?)$/ ' , trim ((string ) $ field ), $ m )) {
251278 $ column ['class ' ] = '' ;
252279 $ value = ($ r [$ field ] ? '<a class="btn btn-default btn-sm btn-block" style="font-weight:normal;" href="mailto: ' .$ r [$ field ].'" target="_blank"><i class="fa fa-envelope text-primary"></i> ' .$ r [$ field ].'</a> ' : '' );
@@ -269,13 +296,13 @@ private function getSingleRow($r, $query_structure, $align, $id_module, $id_plug
269296
270297 // Link per i moduli
271298 if (empty ($ id_plugin )) {
272- $ column ['data -link ' ] = base_path_osm ().'/editor.php?id_module= ' .$ id_module .'&id_record= ' .$ id_record .$ hash ;
299+ $ column ['request -link ' ] = base_path_osm ().'/editor.php?id_module= ' .$ id_module .'&id_record= ' .$ id_record .$ hash ;
273300 }
274301 // Link per i plugin
275302 else {
276- $ column ['data -link ' ] = base_path_osm ().'/add.php?id_module= ' .$ id_module .'&id_record= ' .$ id_record .'&id_plugin= ' .$ id_plugin .'&id_parent= ' .$ id_parent .'&edit=1 ' .$ hash ;
303+ $ column ['request -link ' ] = base_path_osm ().'/add.php?id_module= ' .$ id_module .'&id_record= ' .$ id_record .'&id_plugin= ' .$ id_plugin .'&id_parent= ' .$ id_parent .'&edit=1 ' .$ hash ;
277304
278- $ column ['data -type ' ] = 'dialog ' ;
305+ $ column ['request -type ' ] = 'dialog ' ;
279306 }
280307 }
281308
0 commit comments