<?php
namespace App\Http\Controllers;

use App\Http\Resources\PermissionResource;
use App\Http\Requests\UsersRequest;
use App\Http\Resources\UserResource;
use App\Laravue\JsonResponse;
use App\Laravue\Models\Installer;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\ResourceCollection;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Redis;
use Validator;

class InstallerController extends Controller
{
    //装维人员列表
    public function installerlist (Request $request){
        $limit = (int)$request->input('limit');
        $pagenNum= $limit * ((int)$request->input('page')-1);//页数
        $instllerdata = Installer::offset($pagenNum)->limit($limit)->get();
        $count = Installer::count();
       return $this->jsonSuccessData(['instllerdata'=>$instllerdata,'count'=>$count]);
    }

    //用户添加
    public function addinstaller(Request $request){
        $keys = $request->all();
        $validator = Validator::make($request->all(), $this->getValidationRulesinstaller(false));
        if ($validator->fails()) {
            return response()->json(['errors' => $validator->errors()], 403);
        }
        $type = new Installer();
        foreach ($keys as $key => $val) {
            if ($key == 'ispassword') {
                unset($keys[$key]);
            }
        }
        $this->timeline('新增了装维人员');
        return $this->jsonSuccessData($type->addinstall($keys));
    }
    // 用户搜索
    public function seekInstaller(Request $request){
        $keys = $request->all();
        $handle = DB::table('installer');
        foreach ($keys as $key => $val) {
            if ($key == 'page') {
                unset($keys[$key]);
            } elseif ($key == 'limit'){
                unset($keys[$key]);
            }
        }
        foreach ($keys as $k => $v) {
            if ($v == '正常'){
                $v = 1;
            }else if ($v == '禁用'){
                $v = 2;
            }
            $keys[$key] && $handle->where($k, 'like', '%' . $v . '%');
        }
        return $this->jsonSuccessData(['instllerdata'=>$handle->get(),'count'=>$handle->count()]);
    }
    //更新用户操作
    public function updateinstaller(Request $request){
        $uid =  $request->input('id');//用户id
        $data = $request->all();
        if (is_null($uid)){
            return $this->jsonErrorData(105,'用户id不能为空');
        }
        if ($request->isMethod('post')){
            foreach ($data as $k => $v) {
                if ($k == 'id') {
                    unset($data[$k]);
                }else if ($k == 'ispassword'){
                    unset($data[$k]);
                }else if ($k == 'password') {
                    $data['password'] =  md5(md5($v) . $data['salt']);
                }
            }
            $upin = Installer::where('id','=',(int)$uid)->update($data);
            if($upin !== false){
                return $this->jsonSuccessData($upin);
            }
            return $this->jsonErrorData(105,'更新失败');

        }else{
                return $this->jsonSuccessData(Installer::where('id','=',$uid)->first());
        }
    }

    /*
     *删除用户
     * type 1== 物理 2==逻辑删除
     * */

    public function  deleteinstaller(Request $request){
        $type = $request->input('type');
        $uid = $request->input('uid');
        if(is_null($type)){
            return $this->jsonErrorData(105,'type不能为空');
        }
        if (is_null($uid)){
            return $this->jsonErrorData(105,'uid不能为空');
        }
        if ($type == 1){//物理删除
            $this->timeline('装维人员放置废纸篓');
            return $this->jsonSuccessData(Installer::where('id','=',$uid)->delete());
        }elseif($type == 2){//逻辑删除
            $this->timeline('删除了废纸篓');
            return $this->jsonSuccessData(Installer::where('id','=',$uid)->update(['delete'=>2,'status'=>2]));
        }

    }
    //用户回复正常
    public function normalinstaller($id){
        return $this->jsonSuccessData(Installer::where('id','=',$id)->update(['delete'=>1,'status'=>1]));
    }
    //验证用户提交表单

    private function getValidationRulesinstaller($isNew = true){
        return [
            'username'=>'required|unique:installer,username|max:3',
            'name'=> 'required|max:10',
            'phone'=> 'required|regex:/^1[3465789]\d{9}$/|unique:installer,phone|max:11',
            'email' => 'required|email',
            'password' =>'required|max:10',
        ];
    }
}