<?php
namespace App\Services\Admin\YeWu;

use Illuminate\Support\Facades\DB;
use mysql_xdevapi\Table;

class CheckItemService
{

    //获取检查项目类别列表
    public function GetClassList($searchInfo){
        $bigClass=DB::table('s_check_item_class')->where(['pid'=>0,'is_del'=>0])->get();
        $smallClass=[];
        if(!empty($searchInfo['bigClass'])) {
            $smallClass = DB::table('s_check_item_class')->where(['pid'=>$searchInfo['bigClass'],'is_del'=>0])->get();
        }
        return \Yz::Return(true, '查询成功', ['bigClass'=>$bigClass,'smallClass'=>$smallClass]);
    }
    //获取检查项目列表
    public function GetItemList($searchInfo,$page,$pageSize){
        $where=['s_check_item.is_del'=>0];
        $small_id=[];
        $list=DB::table('s_check_item');
        if(empty($searchInfo['bigClass'])!==true and empty($searchInfo['smallClass'])===true){
         $small_id= DB::table('s_check_item_class')->where(['pid'=>$searchInfo['bigClass'],'is_del'=>0])->pluck('id')->toArray();
            $list=  $list->whereIn('item_class_id',$small_id);
        }
        if(!empty($searchInfo['smallClass'])){
            $small_id[0]=$searchInfo['smallClass'];
            $list= $list->whereIn('item_class_id',$small_id);
        }
        if(!empty($searchInfo['name'])){
            $where[]=['item_name','like','%'.$searchInfo['name'].'%'];
        }
        $count= $list->where($where)->count();
        $list= $list
            ->leftJoin('s_appointment_type', 's_check_item.reservation_method', '=', 's_appointment_type.id')
            ->select('s_check_item.*','s_appointment_type.name as reservation_method_name')
            ->where($where)->skip(($page-1)*$pageSize) // 跳过前9999条记录
        ->take($pageSize)->get();
        //查询出所有的预约渠道
        $qudaoList=DB::table('s_appointment_type')->get();
        foreach ($list as $k=>$v){
            $qudao_names=[];
            $qudao_ids = explode(",", $v->reservation_method);
            foreach ($qudaoList as $k1=>$v1){
                foreach  ($qudao_ids as $k2=>$v2){
                    if($v1->id==$v2){
                        $qudao_names[]=$v1->name;
                    }
                }
            }

            $list[$k]->reservation_method= array_map('intval', $qudao_ids);
            $list[$k]->reservation_method_name=$qudao_names;
            $list[$k]->devicesInfo=DB::table('s_check_item_device')
                ->join('s_devices', 's_check_item_device.device_id', '=', 's_devices.id')
                ->select('s_devices.*')
                ->where('item_id',$v->id)->get();
        }

        return \Yz::Return(true, '查询成功', ['list'=>$list,'count'=>$count]);
    }

    //绑定设备
    public function BindDevice($item_id,$device_ids){
        $data=[];
        foreach ($device_ids as $k=>$v){
            $data[$k]['item_id']=$item_id;
            $data[$k]['device_id']=$v;
        }
        DB::beginTransaction();
        DB::table('s_check_item_device')->where('item_id',$item_id)->delete();
        $i= DB::table('s_check_item_device')->insert($data);
        if($i>0){
            DB::commit();
            return \Yz::Return(true, '绑定成功', []);
        }else{
            DB::rollBack();
            return \Yz::Return(false, '绑定失败');
        }
    }
    public function Save($Info){
        if(!empty($Info['id'])){
            $Info['reservation_method']=implode(',', $Info['reservation_method']);
            $res=DB::table('s_check_item')->where('id',$Info['id'])->update($Info);
            if($res){
                return \Yz::Return(true, '修改成功');
            }else{
                return \Yz::Return(false, '修改失败');
            }
        }else{
            return \Yz::Return(false, 'id不能为空');
        }
    }
}
