sayliR #38
@@ -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]);
|
||||
|
||||
|
||||
|
||||
@@ -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]);
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
class TelemetryController extends Controller
|
||||
@@ -50,7 +51,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) {
|
||||
@@ -58,14 +58,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[] = [
|
||||
|
||||
@@ -30,28 +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();
|
||||
// dd($token);
|
||||
$token = readHeaderToken();
|
||||
|
||||
// Fetch user with assets and device counts
|
||||
$user = User::with(['assets.devices'])
|
||||
@@ -79,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);
|
||||
@@ -132,4 +128,3 @@ class UserAssetLinkController extends Controller
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -82,8 +82,8 @@ public function getThingsBoardDevices($customerId)
|
||||
// 'keys' => 'MechanicalHealth_valueInPercent',
|
||||
// 'startTs' => $startTs,
|
||||
// 'interval' => $endTs,
|
||||
'limit' => 100,
|
||||
'useStrictDataTypes' => false
|
||||
// 'limit' => 100,
|
||||
// 'useStrictDataTypes' => false
|
||||
]);
|
||||
|
||||
|
||||
@@ -101,6 +101,7 @@ public function getThingsBoardDevices($customerId)
|
||||
|
||||
// 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}", [
|
||||
|
||||
@@ -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');
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user