/**
  * 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);
 }
Exemple #2
0
 /**
  * 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
     }
 }
Exemple #3
0
 /**
  * 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();
         }
     }
 }