. * * @link https://www.librenms.org * @copyright 2018 Tony Murray * @author Tony Murray */ namespace App\Http\Controllers\Widgets; use App\Models\Component; use DB; use Illuminate\Http\Request; use Illuminate\View\View; class ComponentStatusController extends WidgetController { protected $title = 'Component Status'; protected $defaults = [ 'device_group' => null, ]; /** * @param Request $request * @return View */ public function getView(Request $request) { $data = $this->getSettings(); $status = [ [ 'color' => 'text-success', 'text' => __('Ok'), ], [ 'color' => 'grey', 'text' => __('Warning'), ], [ 'color' => 'text-danger', 'text' => __('Critical'), ], ]; $component_status = Component::query() ->select('status', DB::raw("count('status') as total")) ->groupBy('status') ->where('disabled', '!=', 0) ->when($data['device_group'], function ($query) use ($data) { $query->inDeviceGroup($data['device_group']); }) ->get()->pluck('total', 'status')->toArray(); foreach ($status as $key => $value) { $status[$key]['total'] = isset($component_status[$key]) ? $component_status[$key] : 0; } return view('widgets.component-status', compact('status')); } public function getSettingsView(Request $request) { return view('widgets.settings.component-status', $this->getSettings(true)); } }