validate([ 'stabile_id' => ['nullable', 'integer'], 'codice_stabile' => ['nullable', 'string', 'max:20'], 'limit' => ['nullable', 'integer', 'min:1', 'max:100'], ]); $stabileId = isset($validated['stabile_id']) ? (int) $validated['stabile_id'] : null; if (! $stabileId && ! empty($validated['codice_stabile']) && Schema::hasTable('stabili')) { $codice = trim((string) $validated['codice_stabile']); $trimmed = ltrim($codice, '0'); $stabileId = DB::table('stabili') ->where(function ($query) use ($codice, $trimmed): void { $query->where('codice_stabile', $codice); if ($trimmed !== '' && $trimmed !== $codice) { $query->orWhere('codice_stabile', $trimmed); } }) ->value('id'); } if (! $stabileId) { return response()->json([ 'message' => 'Specificare stabile_id o codice_stabile valido.', ], 422); } return response()->json($service->forStabile((int) $stabileId, (int) ($validated['limit'] ?? 20))); } }