device user list based on customer, login, create alarm
This commit is contained in:
170
app/Http/Controllers/APIS/AdminApi/DeviceController.php
Normal file
170
app/Http/Controllers/APIS/AdminApi/DeviceController.php
Normal file
@@ -0,0 +1,170 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\APIS\AdminApi;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\CreateDeviceRequest;
|
||||
use App\Models\Device;
|
||||
use App\Services\DeviceService;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Exception;
|
||||
|
||||
|
||||
class DeviceController extends Controller
|
||||
{
|
||||
|
||||
protected $deviceService;
|
||||
|
||||
public function __construct(DeviceService $deviceService)
|
||||
{
|
||||
$this->deviceService = $deviceService;
|
||||
}
|
||||
|
||||
|
||||
public function createOrUpdateDevice(CreateDeviceRequest $request)
|
||||
{
|
||||
try {
|
||||
|
||||
$deviceData = [
|
||||
'name' => $request->name ?? null,
|
||||
'type' => $request->type ?? null,
|
||||
'label' => $request->label ?? null,
|
||||
'version' => $request->version ?? 1,
|
||||
'customerId' => $request->customerId ?? 1,
|
||||
'additionalInfo' => $request->additionalInfo ?? [],
|
||||
'deviceData' => [
|
||||
'configuration' => ['type' => 'DEFAULT'],
|
||||
'transportConfiguration' => [
|
||||
'type' => 'DEFAULT',
|
||||
'powerMode' => $request->transportConfiguration['powerMode'] ?? 'PSM',
|
||||
'psmActivityTimer' => $request->transportConfiguration['psmActivityTimer'] ?? 9007199254740991,
|
||||
'edrxCycle' => $request->transportConfiguration['edrxCycle'] ?? 9007199254740991,
|
||||
'pagingTransmissionWindow' => $request->transportConfiguration['pagingTransmissionWindow'] ?? 9007199254740991,
|
||||
]
|
||||
],
|
||||
'deviceProfileId' => $request->deviceProfileId ?? 1,
|
||||
|
||||
];
|
||||
|
||||
// Optional Fields
|
||||
|
||||
|
||||
// Handle updating existing devices
|
||||
if (!empty($request->id)) {
|
||||
$deviceData['id'] = $request->id;
|
||||
}
|
||||
if (!empty($request->firmwareId)) {
|
||||
$deviceData['firmwareId'] = $request->firmwareId;
|
||||
}
|
||||
if (!empty($request->softwareId)) {
|
||||
$deviceData['softwareId'] = $request->softwareId;
|
||||
}
|
||||
|
||||
|
||||
// Call Service to create/update device
|
||||
$apiResponse = $this->deviceService->createOrUpdateDevice($deviceData);
|
||||
|
||||
// Store device in the database
|
||||
$device = Device::updateOrCreate(
|
||||
['id' => $apiResponse['id']['id'] ?? Str::uuid()->toString()],
|
||||
[
|
||||
'entity_type' => $apiResponse['id']['entityType'] ?? 'DEVICE',
|
||||
'created_time' => $apiResponse['createdTime'] ?? now()->timestamp,
|
||||
'customer_id' => $apiResponse['customerId']['id'] ?? null,
|
||||
'name' => $apiResponse['name'] ?? null,
|
||||
'type' => $apiResponse['type'] ?? null,
|
||||
'label' => $apiResponse['label'] ?? null,
|
||||
'asset_id' => $apiResponse['asset_id'] ?? 'a5daeb60-f36c-11ef-a9dc-45dd276e4cd5',
|
||||
'device_profile_id' => $apiResponse['deviceProfileId']['id'] ?? null,
|
||||
'firmware_id' => $apiResponse['firmwareId']['id'] ?? null,
|
||||
'software_id' => $apiResponse['softwareId']['id'] ?? null,
|
||||
'version' => $apiResponse['version'] ?? 1,
|
||||
'tenant_id' => $apiResponse['tenantId']['id'] ?? null,
|
||||
'device_data' => json_encode($apiResponse['deviceData'] ?? []),
|
||||
'additional_info' => json_encode($apiResponse['additionalInfo'] ?? [])
|
||||
]
|
||||
);
|
||||
|
||||
return jsonResponseWithSuccessMessage(
|
||||
!empty($request->id) ? 'Device updated successfully' : 'Device created successfully',
|
||||
['device' => $device, '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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function listDevices(Request $request)
|
||||
{
|
||||
try {
|
||||
$devices = Device::all();
|
||||
|
||||
return jsonResponseWithSuccessMessage('Devices fetched successfully', [
|
||||
'devices' => $devices
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
Log::error("An error occurred: " . $e->getMessage());
|
||||
return jsonResponseWithErrorMessage($e->getMessage(), 500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function deleteDevice($deviceId)
|
||||
{
|
||||
|
||||
try {
|
||||
if (!$deviceId) {
|
||||
return jsonResponseWithErrorMessage('Device ID is required', 400);
|
||||
}
|
||||
$response = $this->deviceService->deleteDevice(['deviceId' => $deviceId]);
|
||||
|
||||
|
||||
$Device = Device::where('id', $deviceId)->first();
|
||||
if ($Device) {
|
||||
$Device->delete();
|
||||
}
|
||||
|
||||
return jsonResponseWithSuccessMessage('Device deleted successfully', ['api_response' => $response]);
|
||||
} catch (Exception $e) {
|
||||
Log::error("An error occurred: " . $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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function devicelistCustomer($customerId)
|
||||
{
|
||||
try {
|
||||
|
||||
$devices = Device::where('customer_id', $customerId)->get();
|
||||
|
||||
if ($devices->isEmpty()) {
|
||||
return response()->json(['message' => 'No devices found for this customer ID'], 404);
|
||||
}
|
||||
|
||||
return jsonResponseWithSuccessMessage('Devices fetched successfully', [
|
||||
'Devices' => $devices
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
Log::error("An error occurred in customer device listing: " . $e->getMessage());
|
||||
|
||||
return jsonResponseWithErrorMessage($e->getMessage(), 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user