Files
salt-minv-graph/app/Http/Controllers/Search.php
2020-03-31 16:34:58 +02:00

152 lines
3.5 KiB
PHP

<?php
namespace App\Http\Controllers;
#use Illuminate\Http\Request;
use Request;
use Response;
use Illuminate\Support\Facades\DB;
class Search extends Controller
{
public function autocomplete(){
$term = Request::input('term');
$users = array();
$computers = array();
$uin = [];
$cin = [];
$results = [];
$queries = DB::table('users')
->select('id','name')
->get();
foreach ($queries as $query)
{
$users[$query->id] = $query->name;
if ($term && strpos($query->name, $term) === 0) {
$uin[] = $query->id;
}
}
$queries = DB::table('computers')
->select('id','computer')
->get();
foreach ($queries as $query)
{
$computers[$query->id] = $query->computer ;
if ($term && strpos(strtolower($query->computer),strtolower($term)) === 0) {
$cin[] = $query->id;
}
}
$queries = DB::table('user_ip')
->select('computer_id','user_id')->distinct()
->whereIn('computer_id',$cin)
->orWhereIn('user_id',$uin)
->get();
foreach ($queries as $query) {
$results[] = [ 'id' => $query->computer_id, 'computer' => $computers[$query->computer_id], 'user' => $users[$query->user_id]];
}
return Response::json($results);
}
public function multicomplete(){
$term = Request::input('term');
$type = Request::input('type');
$results = [];
if ($type == 0) {
$qs = DB::table('users')
->where('name','LiKE',$term.'%')
->pluck('name','id');
foreach ($qs as $id => $name) {
$results[] = [ 'id' => $id, 'name' => $name];
}
}
if ($type == 1) {
$qs = DB::table('computers')
->where('computer','LiKE',$term.'%')
->pluck('computer','id');
foreach ($qs as $id => $name) {
$results[] = [ 'id' => $id, 'name' => $name];
}
}
if ($type == 2) {
$qs = DB::table('user_ip')
->select('ip')
->where('ip','LIKE',$term.'%')
->distinct()
->pluck('ip');
foreach ($qs as $ip) {
$results[] = [ 'id' => $ip, 'name' => $ip];
}
}
return Response::json($results);
}
public function multiple() {
$type = Request::input('type', 0);
$search = Request::input('search',null);
if ($type == 0) {
$u = DB::table('users')
->where('name','=',$search)
->select('name','id')
->first();
$wh = ['user_id','=',$u->id];
}
if ($type == 1) {
$c = DB::table('computers')
->where('computer','=',$search)
->select('computer','id')
->first();
$wh = ['computer_id','=',$c->id];
}
$data = DB::table('user_ip')
->select('user_ip.ip as ip','u.name as name','c.computer as comp',DB::raw('MIN(`user_ip`.`created_at`) as f'),DB::raw('MAX(`user_ip`.`created_at`) as t'))
->join('users as u', 'u.id', '=', 'user_ip.user_id')
->join('computers as c','c.id','=','user_ip.computer_id')
->groupBy('user_ip.ip','user_ip.user_id','user_ip.computer_id')
->where([$wh])
->get();
return Response::json($data);
}
public function lastactive()
{
$time = strtotime("-15 minutes", time());
$date = date("Y-m-d G:i:s", $time);
$data = DB::table('user_ip')
->select('user_ip.ip as ip','u.name as name','c.computer as comp',DB::raw('MIN(`user_ip`.`created_at`) as f'),DB::raw('MAX(`user_ip`.`created_at`) as t'))
->join('users as u', 'u.id', '=', 'user_ip.user_id')
->join('computers as c','c.id','=','user_ip.computer_id')
->groupBy('user_ip.ip','user_ip.user_id','user_ip.computer_id')
->where('user_ip.created_at','>=',$date)
->orderBy('u.name')
->get();
return view('lastactive')->with('data', $data);
}
public function search($var = null)
{
$ip = Request::input('ip');
$user = Request::input('user');
}
}