/** * Display a listing of the resource. * * @return Response */ public function index() { $devices = DetectedDevice::orderBy('created_at', 'desc')->get(); $uniqueDevices = $devices->unique('mac_address'); //Attach the count of the number of occurrences to each record $uniqueDevices->each(function ($item, $key) use($devices) { $item['occurrences'] = $devices->where('mac_address', $item['mac_address'])->count(); }); //Ensure the display name is always present and doesn't get overridden by a newer blank name $uniqueDevices->each(function ($item, $key) use($devices) { $item['display_name'] = $devices->where('mac_address', $item['mac_address'])->sortByDesc('display_name')->first()->display_name; }); return view('detected_devices.index', ['devices' => $uniqueDevices]); }
private function logDetectedDevices($data) { //this isn't strictly a heartbeat but the updates occur at a regular interval so they will do $this->acsNodeRepository->logHeartbeat($data['device']); //See if any devices have been detected, if so log them foreach (array_keys($data['payload']['bluetooth_devices']) as $macAddress) { DetectedDevice::create(['type' => 'bluetooth', 'mac_address' => $macAddress, 'display_name' => $data['payload']['bluetooth_devices'][$macAddress]]); } }