diff --git a/app/Http/Controllers/AlarmController.php b/app/Http/Controllers/AlarmController.php index a4ae21d..2827ae4 100644 --- a/app/Http/Controllers/AlarmController.php +++ b/app/Http/Controllers/AlarmController.php @@ -62,4 +62,36 @@ class AlarmController extends Controller return jsonResponseWithErrorMessage($e->getMessage(), 500); } } + + public function filterAlarm(Request $request) + { + try { + $alarmData = $request->only([ + // 'statusList', + 'severity', + // 'type', + // 'assigneeId', + 'pageSize', + 'page', + // 'textSearch', + // 'sortProperty', + // 'sortOrder', + 'startTs', + 'endTs' + ]); + + $apiResponse = $this->alarmService->filterAlarm($alarmData); + + return jsonResponseWithSuccessMessage('Alarm data retrieved successfully', ['api_response' => $apiResponse]); + } catch (Exception $e) { + Log::error("Error: " . $e->getMessage()); + + $errorResponse = json_decode($e->getMessage(), true); + if (json_last_error() === JSON_ERROR_NONE) { + return jsonResponseWithErrorMessage($errorResponse['message'] ?? 'Something went wrong', 400, $errorResponse); + } + + return jsonResponseWithErrorMessage($e->getMessage(), 500); + } + } } diff --git a/app/Services/AlarmService.php b/app/Services/AlarmService.php index 849dcb8..d68935b 100644 --- a/app/Services/AlarmService.php +++ b/app/Services/AlarmService.php @@ -106,6 +106,41 @@ class AlarmService } + public function filterAlarm(array $data) + { + $token = $this->getToken(); + + $queryParams = array_filter([ + // 'statusList' => $data['statusList'] ?? null, + 'severityList' => $data['severity'] ?? null, + // 'typeList' => $data['type'] ?? null, + // 'assigneeId' => $data['assigneeId'] ?? null, + '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, + ], function ($value) { + return $value !== null; + }); + + $url = "{$this->baseUrl}/api/v2/alarms" . (count($queryParams) ? '?' . http_build_query($queryParams) : ''); + + $response = Http::withHeaders([ + 'Authorization' => "Bearer $token", + 'Accept' => 'application/json', + ])->get($url); + + if (!$response->successful()) { + Log::error("API Error Response:", ['body' => $response->body()]); + throw new Exception('API Error: ' . $response->body()); + } + + return $response->json(); + } + public function deleteDevice(array $data) { diff --git a/routes/admin_api.php b/routes/admin_api.php index 81913f3..16cd4f7 100644 --- a/routes/admin_api.php +++ b/routes/admin_api.php @@ -63,3 +63,5 @@ Route::post('/update-device-profile-master/{deviceId}', [DeviceProfileMasterCont //******************************************************* Alarm API ******************************************************** Route::post('/alarm/create-or-update', [AlarmController::class, 'createOrUpdateAlarm'])->name('alarm.create-or-update'); +Route::post('/alarm/filter', [AlarmController::class, 'filterAlarm'])->name('alarm.filter'); +