sayliR #66

Merged
Sayli.Raut merged 2 commits from sayliR into main 2025-04-07 07:27:11 +00:00
2 changed files with 42 additions and 1 deletions

View File

@@ -367,6 +367,9 @@ class TelemetryController extends Controller
public function telemetryDataDevice(Request $request)
{
try {
$token = readHeaderToken();
$customerId = User::where('id', $token['sub'])->value('customer_id');
Log::info('Telemetry request received', ['request_data' => $request->all()]);
$token = readHeaderToken();
@@ -410,6 +413,7 @@ class TelemetryController extends Controller
}
])
->where('id', $deviceId)
->where('customer_id', $customerId)
->firstOrFail();
$displayKeys = $deviceWithTelemetry->timeseriesKeys->pluck('key_name')->toArray();

View File

@@ -148,7 +148,7 @@ class UserAssetLinkController extends Controller
// }
public function index()
{
@@ -209,8 +209,31 @@ class UserAssetLinkController extends Controller
$healthyDevices = [];
foreach ($asset->devices as $device) {
$device->online = null;
$device->celebration_message = null;
$device->celebration_icon = false; // Default to false
$device->health_status = 'green'; // Default
//online status
$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());
continue;
}
$deviceData = collect($deviceResponse->json()['data'] ?? []);
$matchingDevice = $deviceData->firstWhere('id.id', $device->id);
// Explicitly set online status for all devices
$device->online = $matchingDevice['active'] ?? false;
$telemetryResponse = Http::withHeaders([
'accept' => 'application/json',
@@ -236,6 +259,20 @@ class UserAssetLinkController extends Controller
->pluck('value')->map(fn($v) => (float)$v)->avg();
}
// Set health status based on telemetry values
foreach ($deviceParameters as $category => $parameters) {
foreach ($parameters as $parameter) {
if (isset($telemetryData[$parameter][0]['value'])) {
$value = (float) $telemetryData[$parameter][0]['value'];
if ($value > 0 && $value < 31) {
$device->health_status = 'red';
} elseif ($value > 30 && $value < 71) {
$device->health_status = 'yellow';
}
}
}
}
if (collect($averages)->filter(fn($avg) => $avg > 70)->isNotEmpty()) {
$device->celebration_icon = true; // Set to true
$device->celebration_message = "Your device '{$device->name}' has maintained good health for the past 30 days.";