sayliR #60

Merged
Sayli.Raut merged 2 commits from sayliR into main 2025-04-02 13:50:53 +00:00
4 changed files with 62 additions and 32 deletions

View File

@@ -158,21 +158,20 @@ class AlarmControllerCommon extends Controller
public function filterAlarm(Request $request)
{
try {
$token = readHeaderToken();
$useId = $token['sub'];
$alarmData = $request->only([
// 'statusList',
'severity',
// 'type',
// 'assigneeId',
'pageSize',
'page',
// 'textSearch',
// 'sortProperty',
// 'sortOrder',
'startTs',
'endTs'
'endTs',
'deviceId',
'assetId'
]);
$apiResponse = $this->alarmService->filterAlarm($alarmData);
$apiResponse = $this->alarmService->filterAlarm($alarmData, $useId);
return jsonResponseWithSuccessMessage('Alarm data retrieved successfully', ['api_response' => $apiResponse]);
} catch (Exception $e) {

View File

@@ -2,6 +2,7 @@
namespace App\Services;
use App\Models\Device;
use App\Models\TimeseriesKeyMaster;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
@@ -79,7 +80,6 @@ class AlarmService
}
return $response->json()['data'] ?? [];
} catch (\Exception $e) {
Log::error("Error fetching ThingsBoard devices: " . $e->getMessage());
return [];
@@ -285,7 +285,7 @@ class AlarmService
'useStrictDataTypes' => false
]);
// dd($response);
// dd($response);
// Check if the response was successful
if (!$response->successful()) {
@@ -313,22 +313,36 @@ class AlarmService
}
public function filterAlarm(array $data)
public function filterAlarm(array $data, $useId)
{
$token = $this->getToken();
$deviceId = null;
if (!empty($data['deviceId'])) {
$deviceId = $data['deviceId'];
}
elseif (!empty($data['assetId'])) {
$deviceId = Device::where('asset_id', $data['assetId'])->value('id');
}
if (!empty($data['assetId']) && empty($deviceId)) {
return [
'data' => [],
'totalPages' => 0,
'totalElements' => 0,
'hasNext' => false,
];
}
$queryParams = array_filter([
// 'statusList' => $data['statusList'] ?? null,
'severityList' => $data['severity'] ?? null,
// 'typeList' => $data['type'] ?? null,
// 'assigneeId' => $data['assigneeId'] ?? null,
'assigneeId' => $useId,
'pageSize' => $data['pageSize'] ?? 10,
'page' => $data['page'] ?? 0,
// 'textSearch' => $data['textSearch'] ?? null,
// 'sortProperty' => $data['sortProperty'] ?? null,
// 'sortOrder' => $data['sortOrder'] ?? null,
'startTime' => $data['startTs'] ?? null,
'endTime' => $data['endTs'] ?? null,
'deviceId' => $deviceId,
], function ($value) {
return $value !== null;
});
@@ -345,9 +359,27 @@ class AlarmService
throw new Exception('API Error: ' . $response->body());
}
return $response->json();
$responseData = $response->json();
// If device filtering was applied, refine the results manually
if (!empty($deviceId) && isset($responseData['data'])) {
$filteredData = array_values(array_filter(
$responseData['data'],
function ($alarm) use ($deviceId) {
return isset($alarm['originator']['id']) && $alarm['originator']['id'] === $deviceId;
}
));
// Update response with the filtered data
$responseData['data'] = $filteredData;
$responseData['totalElements'] = count($filteredData);
}
return $responseData;
}
public function createOrUpdateAlarm(array $data)
{

View File

@@ -60,7 +60,6 @@ Route::post('/update-device-profile-master/{deviceId}', [DeviceProfileMasterCont
Route::post('/alarm/create-or-update', [AlarmControllerCommon::class, 'createOrUpdateAlarm'])->name('alarm.create-or-update');
Route::get('/alarm/{id}', [AlarmControllerCommon::class, 'getAlarmById'])->name('get.alarm');
Route::post('/alarm/ack/{id}', [AlarmControllerCommon::class, 'acknowledgeAlarmById'])->name('ack.alarm');
Route::post('/alarm/filter', [AlarmControllerCommon::class, 'filterAlarm'])->name('alarm.filter');
//******************************************************* Rule Chain API ********************************************************
Route::get('/rule-chains', [RuleChainController::class, 'getRuleChainList'])->name('list.RuleChain');

View File

@@ -19,29 +19,29 @@ Route::get('/customerapi', function () {
Route::post('user-login', [AuthController::class, 'login']);
Route::post('/telemetry-data-device-diagnostic',[TelemetryController::class,'telemePtryDataDeviceDiagnostic']);
Route::post('/telemetry-data-device-diagnostic', [TelemetryController::class, 'telemePtryDataDeviceDiagnostic']);
// Route::post('/user-login', [AuthController::class, 'login']);
Route::middleware(['customerApiBasicAuth'])->group(function () {
Route::get('/user-assets', [UserAssetLinkController::class, 'index']);
Route::get('/customer-device-info',[CustomerDeviceInfoController::class,'customerDeviceInfo']);
Route::get('/user-assets', [UserAssetLinkController::class, 'index']);
Route::get('/customer-device-info', [CustomerDeviceInfoController::class, 'customerDeviceInfo']);
Route::post('/telemetry-data-asset',[TelemetryController::class,'telemetryDataAsset']);
Route::post('/telemetry-data-device',[TelemetryController::class,'telemetryDataDevice']);
Route::post('/telemetry-data-asset', [TelemetryController::class, 'telemetryDataAsset']);
Route::post('/telemetry-data-device', [TelemetryController::class, 'telemetryDataDevice']);
Route::get('/user-assets', [UserAssetLinkController::class, 'index']);
Route::post('/store/report', [CustomerApiDownloadsController::class, 'storePdfData'])->name('store-report');
Route::post('/fetch/report', [CustomerApiDownloadsController::class, 'fetchReport'])->name('fetch-report');
Route::post('/destroy/report', [CustomerApiDownloadsController::class, 'destroyReport'])->name('destroy-report');
Route::post('/alert-message',[TimeseriesAlertMessageController::class, 'alertMessage']);
Route::get('/user-assets', [UserAssetLinkController::class, 'index']);
Route::post('/store/report', [CustomerApiDownloadsController::class, 'storePdfData'])->name('store-report');
Route::post('/fetch/report', [CustomerApiDownloadsController::class, 'fetchReport'])->name('fetch-report');
Route::post('/destroy/report', [CustomerApiDownloadsController::class, 'destroyReport'])->name('destroy-report');
Route::post('/alarm', [AlarmControllerCommon::class, 'getDeviceAlarms'])->name('alarm.device');
Route::post('/alert-message', [TimeseriesAlertMessageController::class, 'alertMessage']);
Route::get('/user-assets', [UserAssetLinkController::class, 'index']);
Route::post('/store/report', [CustomerApiDownloadsController::class, 'storePdfData'])->name('store-report');
Route::post('/fetch/report', [CustomerApiDownloadsController::class, 'fetchReport'])->name('fetch-report');
Route::post('/destroy/report', [CustomerApiDownloadsController::class, 'destroyReport'])->name('destroy-report');
});
Route::post('/alarm/filter', [AlarmControllerCommon::class, 'filterAlarm'])->name('alarm.filter');
Route::post('/alarm', [AlarmControllerCommon::class, 'getDeviceAlarms'])->name('alarm.device');
});