<?php
namespace App\Http\Controllers\Web\Share;

use App\Http\Controllers\Web\WebBaseController;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Services\Share\ShareService;

class ShareController extends WebBaseController
{
    protected $shareService;

    public function __construct(ShareService $shareService)
    {
        $this->shareService = $shareService;
    }

    public function index()
    {

        return view('app.share.index');
    }

    public function getSelectData()
    {
        $trade = DB::table('share_trade')->get();
        $result = [];
        foreach ($trade as $k => $v){
            $sub = DB::table('share_job')->where('trade',$v->id)->get()->toArray();
            $sub_opt = [];
            foreach($sub as $key => $val){
                $item = [
                    'value' =>  $val->id,
                    'label' =>  $val->name
                ];
                array_push($sub_opt,$item);
            }

            $item = [
                'value' =>  $v->id,
                'label' =>  $v->name,
                'sub'   =>  $sub_opt
            ];
            array_push($result,$item);
        }

        return json_encode($result);

    }

    public function getShareHallData(Request $request)
    {
        $type = intval($request->input('type'));
        $trade = intval($request->input('trade'));
        $job = intval($request->input('job'));
        //$page = intval($request->input('page',10));
        $where = [
            ['id','>=',1],
            ['status', '>', 0]
        ];
        if($type > 0){
            $where[] = ['role','=',$type];
        }
        if($trade > 0){
            $where[] = ['trade','=',$trade];
        }
        if($job > 0){
            $where[] = ['pro','=',$job];
        }

        $list = $this->shareService->list($where,10);

        //$list = DB::table('share')->where($where)->paginate(10);
        $result = [
            'total' =>  $list->total(),
            'data' => []
        ];

        if($list->total() > 0){
            $trade = DB::table('share_trade')->pluck('name', 'id');
            $job = DB::table('share_job')->pluck('name', 'id');
            foreach($list as $k => $v){
                if($v->utype == 1){
                    $info = DB::table('companys')->where('id',$v->uid)->first();
                }else{
                    $info = DB::table('member_infos')->where('uid',$v->uid)->first();
                }
                $item = [];
                $item['name'] = $v->utype == 1 ? $info->companyname : substr($info->realname,0,3) . ($info->sex == 1 ? '先生' : '女士');
                $item['utype'] = $v->utype == 1 ? "企业" : "个人" ;
                $item['role'] = $v->role == 1 ? "供应" : "需求";
                switch($v->type){
                    case 1:
                        $item['type'] = '小时工';
                        break;
                    case 2:
                        $item['type'] = '劳务派遣';
                        break;
                    case 3:
                        $item['type'] = '委托招聘';
                        break;
                    case 4:
                        $item['type'] = '服务外包';
                        break;
                    case 5:
                        $item['type'] = '其它';
                        break;
                }
                $item['trade'] = $trade[$v->trade];
                $item['job'] = $job[$v->pro];
                $item['area'] = $v->area;
                $item['time'] = $v->time;
                $item['salary'] = $v->salary;
                $item['number'] = stripos($v->number,'人') ? $v->number : $v->number . '人';
                $item['remark'] = $v->remark;

                $item['contact'] = [
                    'name'  => $item['name'],
                    'email' => $info->email,
                    'phone' => $v->utype == 1 ? $info->mobile : $info->phone
                ];

                array_push($result['data'],$item);
            }
        }

        return json_encode($result);
    }

    public function my(){
        return view('app.share.my');
    }

    public function getMyData()
    {
        $user = $this->getLoginUser();

        $list = $this->shareService->list(['uid'=>$user->id],10);

        $result = [
            'total' =>  $list->total(),
            'data' => []
        ];

        if($list->total() > 0){
            $trade = DB::table('share_trade')->pluck('name', 'id');
            $job = DB::table('share_job')->pluck('name', 'id');
            foreach($list as $k => $v){
                if($v->utype == 1){
                    $info = DB::table('companys')->where('id',$v->uid)->first();
                }else{
                    $info = DB::table('member_infos')->where('uid',$v->uid)->first();
                }
                $item = [];
                $item['name'] = $v->utype == 1 ? $info->companyname : substr($info->realname,0,3) . ($info->sex == 1 ? '先生' : '女士');
                $item['utype'] = $v->utype == 1 ? "企业" : "个人" ;
                $item['role'] = $v->role == 1 ? "供应" : "需求";
                switch($v->type){
                    case 1:
                        $item['type'] = '小时工';
                        break;
                    case 2:
                        $item['type'] = '劳务派遣';
                        break;
                    case 3:
                        $item['type'] = '委托招聘';
                        break;
                    case 4:
                        $item['type'] = '服务外包';
                        break;
                    case 5:
                        $item['type'] = '其它';
                        break;
                }
                $item['trade'] = $trade[$v->trade];
                $item['job'] = $job[$v->pro];
                $item['area'] = $v->area;
                $item['time'] = $v->time;
                $item['salary'] = $v->salary;
                $item['number'] = stripos($v->number,'人') ? $v->number : $v->number . '人';
                $item['remark'] = $v->remark;
                $item['status'] = $v->status;
                $item['id'] = $v->id;

                $item['contact'] = [
                    'name'  => $item['name'],
                    'email' => $info->email,
                    'phone' => $v->utype == 1 ? $info->mobile : $info->phone
                ];

                array_push($result['data'],$item);
            }
        }

        return json_encode($result);
    }

    public function update(Request $request)
    {
        $id = $request->input('id',0);
        return view('app.share.update',['id'=>$id]);
    }

    public function getMyInfo(Request $request)
    {
        $user = $this->getLoginUser();

        $id = $request->input('id');
        if($id){
            //TODO 登录及权限检测
            $info = \App\Models\Share::where('id',$id)->where('uid',$user->id)->first();
            if(!$info){
                return response()->json(['status' => '0', 'msg' => '找不到对应的修改记录']);
            }
            $info->role = (string)$info->role;
            $info->type = explode(',',$info->type);
            $info->status = (string)$info->status;
            return response()->json(['status' => '1', 'msg' => '信息查询成功', 'data' => $info]);
        }else{
            return response()->json(['status' => '1', 'msg' => '信息查询成功','data' => null]);
        }
    }

    public function save(Request $request){

        $data = $request->only('type','trade','pro','area','time','salary','number','remark','status','role','id');
        //判断用户登录状态
        $user = $this->getLoginUser();
        $data['utype'] = $user->utype;
        $data['uid'] = $user->id;
        if(!array_key_exists('role',$data)  || !$data['role']){
            return response()->json(['status' => '0', 'msg' => '请指定信息角色']);
        }
        if(!array_key_exists('type',$data) || !$data['type']){
            return response()->json(['status' => '0', 'msg' => '共享方式不能为空']);
        }else{
            $data['type'] = implode(',',$data['type']);
        }
        if(!array_key_exists('trade',$data) || !$data['trade']){
            return response()->json(['status' => '0', 'msg' => '请选择行业']);
        }
        if(!array_key_exists('pro',$data) || !$data['pro']){
            return response()->json(['status' => '0', 'msg' => '请选择工种']);
        }
        if(!array_key_exists('area',$data) || !$data['area']){
            return response()->json(['status' => '0', 'msg' => '请选择工种']);
        }
        if(!array_key_exists('salary',$data) || !$data['salary']){
            return response()->json(['status' => '0', 'msg' => '请填写薪酬']);
        }
        if(!array_key_exists('number',$data) || !$data['number']){
            return response()->json(['status' => '0', 'msg' => '请填写人员数量']);
        }
        if(array_key_exists('id',$data)  || $data['id']){
            $id = $data['id'];
            unset($data['id']);
        }else{
            $id = 0;
        }
        if($id){
            $affected = \App\Models\Share::where('uid',$data['uid'])->where('id',$id)->update($data);
            if($affected){
                return response()->json(['status' => '1', 'msg' => '信息修改成功']);
            }else{
                return response()->json(['status' => '1', 'msg' => '信息修改失败']);
            }
        }else{
            if(\App\Models\Share::insert($data)){
                return response()->json(['status' => '1', 'msg' => '信息提交成功,我们将尽快为您审核、匹配']);
            }else{
                return response()->json(['status' => '0', 'msg' => '信息提交失败']);
            }
        }
    }

    public function delete(Request $request){
        $user = $this->getLoginUser();
        $id = $request->input('id');
        if(!$id){
            return response()->json(['status' => '0', 'msg' => '请指定修改记录']);
        }
        $info = \App\Models\Share::where('id',$id)->where('uid',$user->id)->first();
        if(!$info){
            return response()->json(['status' => '0', 'msg' => '找不到记录']);
        }

        $info->delete();
        return response()->json(['status' => '1', 'msg' => '删除成功']);
    }
}