/** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $mynodes = \App\Task::where('user_id', \Auth::user()->id)->count(); $myonlinenodes = \App\Node::join('tasks', 'tasks.node_id', '=', 'nodes.id')->where('tasks.user_id', \Auth::user()->id)->join('nodestats', 'nodestats.node_id', '=', 'nodes.id')->where('nodestats.isonline', 0)->count(); $procent = $mynodes > 0 ? $myonlinenodes / $mynodes * 100 : 0; $myclients = \App\Nodestat::join('tasks', 'tasks.node_id', '=', 'nodestats.id')->where('tasks.user_id', \Auth::user()->id)->where('clientcount', '>', 0)->get(); $myclients = $myclients->sum(function ($node) { return $node->clientcount; }); return view('home/index')->with('mynodes', $mynodes)->with('onlineprocent', $procent)->with('myclients', $myclients); }
/** * Execute the console command. * * @return mixed */ public function handle() { $data = json_decode(file_get_contents('http://karte.freifunk-stuttgart.de/json/nodes.json'), true); if (count($data) > 0 && isset($data['nodes']) && isset($data['meta']['timestamp'])) { foreach ($data['nodes'] as $nodeArr) { //find or new node $node = \App\Node::firstOrNew(['mac' => $nodeArr['id']]); $node->name = $nodeArr['name']; $node->save(); //find or new nodestats $nodestat = \App\Nodestat::firstOrNew(['node_id' => $node->id]); $nodestat->isonline = $nodeArr['flags']['online'] == "true" ? 1 : 0; $nodestat->clientcount = $nodeArr['clientcount']; $nodestat->save(); } } else { //TODO mail to admin -> json kaputt } }
/** * Execute the console command. * * @return mixed */ public function handle() { $tasks = \App\Task::where(['active' => 0])->get(); $now = \Carbon\Carbon::now(); foreach ($tasks as $task) { $nodestat = \App\Nodestat::where('node_id', $task->node_id)->first(); if (isset($nodestat)) { if ($nodestat->isonline == 1) { if (!empty($task->offlinesince)) { $task->offlinesince = null; } } else { if (empty($task->offlinesince)) { $task->offlinesince = $now; } $checkdate = \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $task->offlinesince); $intervall = \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $task->intervall); $checkdate->addHours($intervall->hour)->addMinutes($intervall->minute); if ($checkdate->lte($now)) { // wenn letzter alarm und lastrun identisch, war node bisher nichtmehr online => next task if ($task->lastalert != null && $task->lastrun == $task->lastalert) { continue; } $user = \App\User::findOrFail($task->user_id); Mail::send('emails.alarm', ['user' => $user, 'task' => $task], function ($m) use($user, $task) { $m->to($user->email, $user->name)->subject($task->node->name . ' is Offline!'); }); if ($task->smsalarm == 0 && !empty($user->mobilenumber)) { //TODO: write sms } \App\Alert::insert(['task_id' => $task->id]); $task->lastalert = $now; } } $task->lastrun = $now; $task->save(); } } }