<?php

namespace app\api\controller;

use app\common\controller\Api;
use think\Db;
/**
 * 任务大厅
 */
class Hire extends Api
{
    protected $noNeedLogin = [];
    protected $noNeedRight = ['*'];

    //发布任务
    public function add_one(){
        $title     = input('title','','trim');
        $info      = input('info','','trim');
        $type      = input('type',1,'intval');
        $goldprice = input('goldprice',0,'intval');

        if(!$title || !$type || !$goldprice){
            $this->error(__('Invalid parameters'));
        }

        $data = [
            'user_id'    => $this->auth->id,
            'title'      => $title,
            'info'       => $info,
            'type'       => $type,
            'goldprice'  => $goldprice,
            'createtime' => time(),
            'status'     => 1,
        ];

        $id = Db::name('hire')->insertGetId($data);

        $this->success('发布成功',$id);
    }

    //需求市场,个人服务,两个列表
    public function hire_list(){
        $type = input('type',1);

        $list = Db::name('hire')
            ->alias('hire')
            ->join('user','hire.user_id = user.id','LEFT')
            ->field('user.id as user_id,user.u_id,user.username,user.nickname,user.avatar,user.gender,hire.id,hire.title,hire.info,hire.type,hire.goldprice,hire.status')
            ->where('hire.type',$type)
            ->where('hire.status',1)
            ->order('hire.id desc')
            ->autopage()->select();
        $list = list_domain_image($list,['avatar']);

        if(!empty($list)){

            $my_lingqu = Db::name('user_hire')->where('user_id',$this->auth->id)->where('hire_id','IN',array_column($list,'id'))->column('hire_id');

            foreach($list as $key => &$val){

                //是否领取
                $val['is_lingqu'] = in_array($val['id'],$my_lingqu) ? 1 : 0;

                //是否是我发布
                $val['is_my'] = $val['user_id'] == $this->auth->id ? 1 : 0;

            }
        }

        $this->success('success',$list);
    }

    //我领取的列表
    public function my_join_list(){
        $list = Db::name('user_hire')->alias('uh')
            ->join('hire','uh.hire_id = hire.id','LEFT')
            ->join('user','hire.user_id = user.id','LEFT')
            ->field('user.id as user_id,user.u_id,user.username,user.nickname,user.avatar,user.gender,hire.id,hire.title,hire.info,hire.type,hire.goldprice,hire.status')
            ->where('uh.user_id',$this->auth->id)
            ->order('uh.id desc')
            ->autopage()->select();
        $list = list_domain_image($list,['avatar']);

        $this->success('success',$list);
    }

    //我发布的列表
    public function my_own_list(){
        $list = Db::name('hire')
            ->alias('hire')
            ->join('user','hire.user_id = user.id','LEFT')
            ->field('user.id as user_id,user.u_id,user.username,user.nickname,user.avatar,user.gender,hire.id,hire.title,hire.info,hire.type,hire.goldprice,hire.status')
            ->where('hire.user_id',$this->auth->id)
            ->order('hire.id desc')
            ->autopage()->select();
        $list = list_domain_image($list,['avatar']);

        $this->success('success',$list);
    }

    //某任务,参与人员
    public function hire_joinuser_list(){
        $hire_id = input('hire_id',0);

        $list = Db::name('user_hire')->alias('uh')
            ->join('user','uh.user_id = user.id','LEFT')
            ->field('user.id as user_id,user.u_id,user.username,user.nickname,user.avatar,user.gender,user.desc')
            ->where('uh.hire_id',$hire_id)
            ->select();
        $list = list_domain_image($list,['avatar']);

        $this->success('success',$list);
    }

    //领取一个任务
    public function join_hire(){
        $this->apiLimit();

        $hire_id = input('hire_id',0);

        $hire_info = Db::name('hire')->where('id',$hire_id)->find();
        if($hire_info['status'] != 1){
            $this->error('任务已关闭,请刷新重试');
        }
        if($hire_info['user_id'] == $this->auth->id){
            $this->error('不能领取自己发布的任务');
        }

        //去重
        $map = [
            'user_id' => $this->auth->id,
            'hire_id' => $hire_id
        ];
        $check = Db::name('user_hire')->where($map)->find();
        if(!empty($check)){
            $this->error('已经领取该任务,无需重复领取');
        }

        $map['createtime'] = time();
        Db::name('user_hire')->insertGetId($map);

        $this->success('领取成功');
    }


    //关闭我的任务
    public function close_one(){
        $hire_id = input('hire_id',0);
        if(!$hire_id){
            $this->error(__('Invalid parameters'));
        }

        $map = [
            'user_id' => $this->auth->id,
            'id' => $hire_id,
        ];

        $rs = Db::name('hire')->where($map)->update(['status'=>0]);
        $this->success('操作成功');
    }
}