|
12 | 12 | use App\Jobs\PushToJedi; |
13 | 13 | use App\Models\AccessCard; |
14 | 14 | use App\Models\Attendance; |
15 | | -use App\Models\Device; |
16 | 15 | use App\Models\Team; |
17 | 16 | use App\Models\User; |
18 | 17 | use App\Util\AuthorizeInclude; |
| 18 | +use App\Util\DeviceInventory; |
19 | 19 | use Illuminate\Database\Eloquent\Builder; |
20 | 20 | use Illuminate\Http\JsonResponse; |
21 | 21 | use Illuminate\Http\Request; |
@@ -90,37 +90,7 @@ public function store(StoreAttendanceRequest $request): JsonResponse |
90 | 90 | // Upsert the device if a reader is provided |
91 | 91 | $device = null; |
92 | 92 | if ($request->has('reader')) { |
93 | | - $reader = $request->input('reader'); |
94 | | - $recordingUser = $request->user(); |
95 | | - |
96 | | - if (! $recordingUser instanceof User) { |
97 | | - return response()->json([ |
98 | | - 'status' => 'error', |
99 | | - 'message' => 'A user token is required.', |
100 | | - ], 401); |
101 | | - } |
102 | | - |
103 | | - $ipAddress = $request->ip(); |
104 | | - |
105 | | - if ($ipAddress === null) { |
106 | | - return response()->json([ |
107 | | - 'status' => 'error', |
108 | | - 'message' => 'last_seen_ip_address is required.', |
109 | | - ], 422); |
110 | | - } |
111 | | - |
112 | | - $device = Device::updateOrCreate( |
113 | | - ['serial_number' => $reader['serial_number']], |
114 | | - [ |
115 | | - 'hardware_version' => $reader['hardware_version'], |
116 | | - 'software_version' => $reader['software_version'], |
117 | | - 'firmware_version' => $reader['firmware_version'], |
118 | | - 'battery_percentage' => $reader['battery_percentage'], |
119 | | - 'last_seen_user_id' => $recordingUser->id, |
120 | | - 'last_seen_at' => now(), |
121 | | - 'last_seen_ip_address' => $ipAddress, |
122 | | - ] |
123 | | - ); |
| 93 | + $device = DeviceInventory::upsert($request, $request->input('reader')); |
124 | 94 | } |
125 | 95 |
|
126 | 96 | $attendanceData = $request->validated(); |
|
0 commit comments