json([ 'message' => config($prefix ? "messages.{$prefix}.index" : 'messages.index'), 'data' => $paginator->items(), 'meta' => [ 'current_page' => $paginator->currentPage(), 'last_page' => $paginator->lastPage(), 'per_page' => $paginator->perPage(), 'total' => $paginator->total(), ], ], 200); } /** * 200 — Collezione di risorse. */ protected function collectionResponse(mixed $collection, ?string $prefix = null): JsonResponse { return response()->json([ 'message' => config($prefix ? "messages.{$prefix}.index" : 'messages.index'), 'data' => $collection, ], 200); } /** * 200 — Singola risorsa. */ protected function okResponse(mixed $data, ?string $prefix = null): JsonResponse { return response()->json([ 'message' => config($prefix ? "messages.{$prefix}.show" : 'messages.show'), 'data' => $data, ], 200); } /** * 201 — Risorsa creata. */ protected function createdResponse(mixed $model, ?string $prefix = null): JsonResponse { return response()->json([ 'message' => config($prefix ? "messages.{$prefix}.created" : 'messages.created'), 'data' => $model, ], 201); } /** * 200 — Risorsa aggiornata. */ protected function updatedResponse(mixed $model, ?string $prefix = null): JsonResponse { return response()->json([ 'message' => config($prefix ? "messages.{$prefix}.updated" : 'messages.updated'), 'data' => $model, ], 200); } /** * 200 — Risorsa eliminata. */ protected function deletedResponse(?string $prefix = null): JsonResponse { return response()->json([ 'message' => config($prefix ? "messages.{$prefix}.deleted" : 'messages.deleted'), ], 200); } /** * 200 — Risorsa ripristinata (soft delete restore). */ protected function restoredResponse(mixed $model, ?string $prefix = null): JsonResponse { return response()->json([ 'message' => config($prefix ? "messages.{$prefix}.restored" : 'messages.restored'), 'data' => $model, ], 200); } /** * 409 — Conflitto: operazione bloccata (es. risorsa in uso). */ protected function conflictResponse(string $message): JsonResponse { return response()->json([ 'message' => $message, 'in_use' => true, ], 409); } /** * Risposta con solo messaggio — chiave config es. "auth.login_success". */ protected function messageResponse(string $configKey, int $status = 200): JsonResponse { return response()->json([ 'message' => config("messages.{$configKey}"), ], $status); } /** * Risposta con messaggio e dati — chiave config es. "auth.login_success". */ protected function dataResponse(mixed $data, string $configKey, int $status = 200): JsonResponse { return response()->json([ 'message' => config("messages.{$configKey}"), 'data' => $data, ], $status); } }