<?php

namespace App\Http\Controllers\Auth;

use Illuminate\Support\Facades\DB;
use App\Laravue\Models\Users;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\DevicesController;
class  SwooleCommandController extends Controller
{
    //返回用户列表
    public function userslist(): string
    {
        //查询用户数量
        $usercount = DB::table('users')->count();//获取用户数量
        //查询设备类型
        $count = DB::table('users as b')
            ->leftjoin('device as d', 'b.id', '=', 'd.uid')
            ->leftjoin('device_type as t', 'd.dtype', '=', 't.tid')
            ->selectRaw('b.name,count(IF(d.dtype=1,true,null)) AS type_1, COUNT(IF(t.tid=2, true, null)) AS type_2,COUNT(IF(t.tid=4, true, null)) AS type_4,COUNT(IF(t.tid=5, true, null)) AS type_5,COUNT(IF(t.tid=6, true, null)) AS type_6,COUNT(IF(t.tid=7, true, null)) AS type_7,COUNT(IF(t.tid=8, true, null)) AS type_8,COUNT(IF(t.tid=9, true, null)) AS type_9,COUNT(IF(t.tid=10, true, null)) AS type_10,COUNT(IF(t.tid=11, true, null)) AS type_11')
            ->groupBy('b.id')
            ->get();
        $countdata = ['usercount' => $usercount, 'userdata' => $count];
        return $this->jsonSuccessData($countdata);
    }

    public function chemicals($id)
    {
        $uid = $this->isadmin($id);
        $databadevice = DB::table('device');
        if($uid == 1){
            $devicelist = $databadevice
                ->whereIn('dtype', [1, 5, 10])
                ->leftjoin('device_type as dy', "device.dtype", '=', 'dy.tid')
                ->leftjoin('gas as g', "device.status", '=', 'g.id')
                ->leftjoin('status as p', "device.devicepolice", '=', 'p.id')
                ->leftjoin('danwei as dw', 'device.devicemonad', '=', 'dw.id')
                ->select('dy.tname', 'g.gas', 'device.*', 'p.status_name', 'dw.danwei')
                ->orderBy('device.id', 'desc')
                ->get()->toArray();
            $count = $databadevice
                ->whereIn('dtype', [1, 5, 10])
                ->count();
        }else{
            $devicelist = $databadevice
                ->whereIn('dtype', [1, 5, 10])
                ->leftjoin('device_type as dy', "device.dtype", '=', 'dy.tid')
                ->leftjoin('gas as g', "device.status", '=', 'g.id')
                ->leftjoin('status as p', "device.devicepolice", '=', 'p.id')
                ->leftjoin('danwei as dw', 'device.devicemonad', '=', 'dw.id')
                ->where('device.uid','=',$id)
                ->select('dy.tname', 'g.gas', 'device.*', 'p.status_name', 'dw.danwei')
                ->orderBy('device.id', 'desc')
                ->get()->toArray();
            $count = $databadevice
                ->where('device.uid','=',$id)
                ->whereIn('dtype', [1, 5, 10])
                ->count();
        }
        return $this->jsonSuccessData("撒旦撒旦撒大卡司肯德基撒");
    }

    public function fire($id)
    {
        $uid = $this->isadmin($id);
        $databadevice = DB::table('device');
        if($uid == 1){
            $devicelist = $databadevice
                ->whereIn('dtype', [2, 4, 6, 7, 8, 9, 11])
                ->leftjoin('device_type as dy', "device.dtype", '=', 'dy.tid')
                ->leftjoin('gas as g', "device.status", '=', 'g.id')
                ->leftjoin('status as p', "device.devicepolice", '=', 'p.id')
                ->leftjoin('danwei as dw', 'device.devicemonad', '=', 'dw.id')
                ->select('dy.tname', 'g.gas', 'device.*', 'p.status_name', 'dw.danwei')
                ->orderBy('device.id', 'desc')
                ->get()->toArray();
            $count = $databadevice
                ->whereIn('dtype', [2, 4, 6, 7, 8, 9, 11])
                ->count();
        }else{
            $devicelist = $databadevice
                ->whereIn('dtype', [2, 4, 6, 7, 8, 9, 11])
                ->leftjoin('device_type as dy', "device.dtype", '=', 'dy.tid')
                ->leftjoin('gas as g', "device.status", '=', 'g.id')
                ->leftjoin('status as p', "device.devicepolice", '=', 'p.id')
                ->leftjoin('danwei as dw', 'device.devicemonad', '=', 'dw.id')
                ->where('device.uid','=',$id)
                ->select('dy.tname', 'g.gas', 'device.*', 'p.status_name', 'dw.danwei')
                ->orderBy('device.id', 'desc')
                ->get()->toArray();
            $count = $databadevice
                ->where('device.uid','=',$id)
                ->whereIn('dtype', [2, 4, 6, 7, 8, 9, 11])
                ->count();
        }
        return $this->jsonSuccessData(['devicelist' => $devicelist, 'count' => $count]);
    }


    //监测是否设备报警
    public function alarm($id)
    {
        $uid = $this->isadmin($id);
        if ($uid == 1) {
            $isalarm = DB::table('reportpolice')
                ->where('status', '=', '1')
                ->where('police', '=', '1')
                ->groupBy('id')
                ->select('devicenumber')
                ->get()->toArray();
        } else {
            $isalarm = DB::table('reportpolice')
                ->join('device as d','reportpolice.devicenumber','=','d.devicenum')
                ->where('reportpolice.status', '=', '1')
                ->where('reportpolice.police', '=', '1')
                ->where('d.uid', '=', $id)
                ->groupBy('reportpolice.id')
                ->select('reportpolice.devicenumber')
                ->get()->toArray();
        }
        if ($isalarm) {
          return $this->jsonSuccessData($isalarm);
        } else {
            return $this->jsonErrorData(105, '当前无报警');
        }
    }
    public function isadmin($id)
    {
        $isadmin = DB::table('users')->where('id','=',$id)->value('isadmin');
        return $isadmin;
    }
}
