diff --git a/app/Http/Controllers/APIS/AdminApi/CustomerController.php b/app/Http/Controllers/APIS/AdminApi/CustomerController.php index 0ace801..54a99a2 100644 --- a/app/Http/Controllers/APIS/AdminApi/CustomerController.php +++ b/app/Http/Controllers/APIS/AdminApi/CustomerController.php @@ -11,6 +11,8 @@ use Illuminate\Http\Request; use Exception; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\Validator; + class CustomerController extends Controller @@ -135,14 +137,18 @@ class CustomerController extends Controller } - public function deleteCustomers($customerId) + public function deleteCustomers(Request $request) { try { - if (!$customerId) { - return jsonResponseWithErrorMessage('Customer ID is required', 400); - } + $validator = Validator::make($request->all(), [ + 'customer_id' => 'required|string', + ]); + if ($validator->fails()) { + return jsonResponseWithErrorMessage($validator->errors()->first(), 400); + } + $customerId = $request->input('customer_id'); $response = $this->adminService->deleteCustomer(['customerId' => $customerId]); diff --git a/app/Http/Controllers/APIS/AdminApi/DeviceController.php b/app/Http/Controllers/APIS/AdminApi/DeviceController.php index 853fd76..fc2a0f7 100644 --- a/app/Http/Controllers/APIS/AdminApi/DeviceController.php +++ b/app/Http/Controllers/APIS/AdminApi/DeviceController.php @@ -10,6 +10,8 @@ use Illuminate\Http\Request; use Illuminate\Support\Str; use Illuminate\Support\Facades\Log; use Exception; +use Illuminate\Support\Facades\Validator; + class DeviceController extends Controller @@ -65,6 +67,7 @@ class DeviceController extends Controller // Call Service to create/update device $apiResponse = $this->deviceService->createOrUpdateDevice($deviceData); + // Log::info("API Response: " . json_encode($apiResponse)); // Store device in the database $device = Device::updateOrCreate( @@ -120,13 +123,19 @@ class DeviceController extends Controller } - public function deleteDevice($deviceId) + public function deleteDevice(Request $request) { try { - if (!$deviceId) { - return jsonResponseWithErrorMessage('Device ID is required', 400); + $validator = Validator::make($request->all(), [ + + 'device_id' => 'required|string', + ]); + if ($validator->fails()) { + return jsonResponseWithErrorMessage($validator->errors()->first(), 400); } + $deviceId = $request->input('device_id'); + $response = $this->deviceService->deleteDevice(['deviceId' => $deviceId]); diff --git a/app/Http/Controllers/APIS/CustomerApi/TelemetryController.php b/app/Http/Controllers/APIS/CustomerApi/TelemetryController.php index 4af5eee..e713d96 100644 --- a/app/Http/Controllers/APIS/CustomerApi/TelemetryController.php +++ b/app/Http/Controllers/APIS/CustomerApi/TelemetryController.php @@ -11,6 +11,7 @@ use Illuminate\Container\Attributes\DB; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB as FacadesDB; use Illuminate\Support\Facades\Http; +use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Validator; @@ -51,7 +52,6 @@ class TelemetryController extends Controller foreach ($devices as $device) { $telemetry = []; - // ✅ Fetch key names along with additional columns from timeseries_key_master $keysData = TimeseriesKeyMaster::where('device_profile_xid', $device->device_profile_id) ->where(function ($query) { @@ -59,14 +59,15 @@ class TelemetryController extends Controller ->orWhere('display_on_popup', true); }) ->get(['key_name', 'display_name', 'display_on_dashboard', 'display_on_popup']); - $keyNames = $keysData->pluck('key_name')->toArray(); - + // dd($keyNames); + // Log::info('keyNames count', ['count' => count($keyNames)]); $telemetryResponse = $this->customerInfoService->getTelemetryData($device, $keyNames, $startTs, $endTs); - + // dd($telemetryResponse); foreach ($keysData as $keyData) { $keyName = $keyData->key_name; + if (isset($telemetryResponse[$keyName])) { foreach ($telemetryResponse[$keyName] as $item) { $telemetry[] = [ diff --git a/app/Http/Controllers/APIS/CustomerApi/UserAssetLinkController.php b/app/Http/Controllers/APIS/CustomerApi/UserAssetLinkController.php index a264ebc..9885f22 100644 --- a/app/Http/Controllers/APIS/CustomerApi/UserAssetLinkController.php +++ b/app/Http/Controllers/APIS/CustomerApi/UserAssetLinkController.php @@ -30,27 +30,27 @@ class UserAssetLinkController extends Controller try { $token = readHeaderToken(); - // $token = readHeaderToken(); + // $token = readHeaderToken(); - // $userAssetLinks = UserAssetLink::with(['user', 'asset.devices']) - // ->withCount([ - // 'assets as active_devices_count' => function ($query) { - // $query->whereHas('devices', function ($q) { - // $q->where('active', 1); - // }); - // }, - // 'assets as inactive_devices_count' => function ($query) { - // $query->whereHas('devices', function ($q) { - // $q->where('active', 0); - // }); - // } - // ]) - // ->where('id', $token['sub']) - // ->first(); + // $userAssetLinks = UserAssetLink::with(['user', 'asset.devices']) + // ->withCount([ + // 'assets as active_devices_count' => function ($query) { + // $query->whereHas('devices', function ($q) { + // $q->where('active', 1); + // }); + // }, + // 'assets as inactive_devices_count' => function ($query) { + // $query->whereHas('devices', function ($q) { + // $q->where('active', 0); + // }); + // } + // ]) + // ->where('id', $token['sub']) + // ->first(); - // return response()->json($userAssetLinks); + // return response()->json($userAssetLinks); - $token = readHeaderToken(); + $token = readHeaderToken(); // Fetch user with assets and device counts $user = User::with(['assets.devices']) @@ -78,50 +78,47 @@ class UserAssetLinkController extends Controller - foreach ($user->assets as $asset) { - foreach ($asset->devices as $device) { - $device->health_status = null; + foreach ($user->assets->flatMap->devices as $device) { + $device->health_status = null; + $device->online = null; - // Fetch device details from API using customer_id and device_id - $deviceResponse = Http::withHeaders([ - 'accept' => 'application/json', - 'Authorization' => 'Bearer ' . $bearerToken, - ])->get("$apiBaseUrl/api/customer/{$device->customer_id}/deviceInfos", [ - 'pageSize' => 100, // Fetch more devices in one request - 'page' => 0 - ]); + // Fetch device details from API using customer_id + $deviceResponse = Http::withHeaders([ + 'accept' => 'application/json', + 'Authorization' => 'Bearer ' . $bearerToken, + ])->get("$apiBaseUrl/api/customer/{$device->customer_id}/deviceInfos", [ + 'pageSize' => 100, + 'page' => 0 + ]); - if (!$deviceResponse->successful()) { - Log::error("Failed to fetch device info for Customer ID: {$device->customer_id}, Error: " . $deviceResponse->body()); - $device->online = null; // Set to false if API call fails - continue; - } - - $deviceData = $deviceResponse->json(); - $matchingDevice = collect($deviceData['data'] ?? []) - ->firstWhere('id.id', $device->id); - - // Explicitly set online status for all devices - $device->online = $matchingDevice['active'] ?? null; - - // Fetch telemetry data for the device - $telemetryResponse = Http::withHeaders([ - 'accept' => 'application/json', - 'Authorization' => 'Bearer ' . $bearerToken, - ])->get("$apiBaseUrl/api/plugins/telemetry/DEVICE/{$device->id}/values/timeseries", [ - 'useStrictDataTypes' => 'false' - ]); - - if (!$telemetryResponse->successful()) { - Log::error("Failed to fetch telemetry for Device ID: {$device->id}, Error: " . $telemetryResponse->body()); - $device->health_status = null; - continue; - } - $telemetryData = $telemetryResponse->json(); - $device->health_status = !empty($telemetryData['MechanicalHealth_valueInPercent']) - ? (float) $telemetryData['MechanicalHealth_valueInPercent'][0]['value'] - : null; + if (!$deviceResponse->successful()) { + Log::error("Failed to fetch device info for Customer ID: {$device->customer_id}, Error: " . $deviceResponse->body()); + continue; } + + $deviceData = collect($deviceResponse->json()['data'] ?? []); + $matchingDevice = $deviceData->firstWhere('id.id', $device->id); + + // Explicitly set online status for all devices + $device->online = $matchingDevice['active'] ?? null; + + // Fetch telemetry data for the device + $telemetryResponse = Http::withHeaders([ + 'accept' => 'application/json', + 'Authorization' => 'Bearer ' . $bearerToken, + ])->get("$apiBaseUrl/api/plugins/telemetry/DEVICE/{$device->id}/values/timeseries", [ + 'useStrictDataTypes' => 'false' + ]); + + if (!$telemetryResponse->successful()) { + Log::error("Failed to fetch telemetry for Device ID: {$device->id}, Error: " . $telemetryResponse->body()); + continue; + } + + $telemetryData = $telemetryResponse->json(); + $device->health_status = !empty($telemetryData['MechanicalHealth_valueInPercent']) + ? (float) $telemetryData['MechanicalHealth_valueInPercent'][0]['value'] + : null; } return response()->json($user); @@ -131,4 +128,3 @@ class UserAssetLinkController extends Controller } } } - diff --git a/app/Services/CustomerInfoService.php b/app/Services/CustomerInfoService.php index 53a853e..8e632bd 100644 --- a/app/Services/CustomerInfoService.php +++ b/app/Services/CustomerInfoService.php @@ -72,10 +72,10 @@ class CustomerInfoService 'keys' => $keys, // 'keys' => 'MechanicalHealth_valueInPercent', - 'startTs' => $startTs, - 'interval' => $endTs, - 'limit' => 100, - 'useStrictDataTypes' => false + // 'startTs' => $startTs, + // 'interval' => $endTs, + // 'limit' => 100, + // 'useStrictDataTypes' => false ]); @@ -93,6 +93,7 @@ class CustomerInfoService // Decode the telemetry response $telemetry = $response->json(); + Log::info("telemetry", $telemetry); if (json_last_error() !== JSON_ERROR_NONE) { Log::error("Failed to decode telemetry response for device: {$device->name}", [ diff --git a/routes/admin_api.php b/routes/admin_api.php index 48d73dd..81913f3 100644 --- a/routes/admin_api.php +++ b/routes/admin_api.php @@ -34,7 +34,7 @@ Route::get('/assets/{customer_id}', [AssetadmintController::class, 'assestlistCu Route::post('/customer/create-or-update', [CustomerController::class, 'createOrUpdateCustomer'])->name('customer.create-or-update'); Route::get('/customer/list', [CustomerController::class, 'listCustomers'])->name('customer.list'); -Route::post('/customer/delete/{customerId}', [CustomerController::class, 'deleteCustomers'])->name('customer.delete'); +Route::post('/customer/delete', [CustomerController::class, 'deleteCustomers'])->name('customer.delete'); //******************************************************* User API******************************************************** @@ -52,7 +52,7 @@ Route::get('/users/{customer_id}', [UsersController::class, 'userlistCustomer']) //******************************************************* Device API******************************************************** Route::post('/device/create-or-update', [DeviceController::class, 'createOrUpdateDevice'])->name('device.create-or-update'); Route::get('/device/list', [DeviceController::class, 'listDevices'])->name('device.list'); -Route::post('/device/delete/{deviceId}', [DeviceController::class, 'deleteDevice'])->name('device.delete'); +Route::post('/device/delete', [DeviceController::class, 'deleteDevice'])->name('device.delete'); Route::get('/device/{customer_id}', [DeviceController::class, 'devicelistCustomer'])->name('devicetList.customer');