<?php

namespace app\api\controller;

use app\common\controller\Api;
use think\Db;
/**
 * 首页接口
 */
class Index extends Api
{
    protected $noNeedLogin = ['index'];
    protected $noNeedRight = ['*'];

    /**
     * 首页
     * 热门试卷3个
     * 未开始的 + 进行中的
     * 我能参与的
     */
    public function index()
    {
        $now    = time();

        //非实名,只能看一部分
        $where_auth = "";
        /*if($this->auth->idcard_status != 1){
            $where_auth = "(find_in_set('".$this->auth->id."',user_ids) )";
        }*/

        $papers = Db::name('exam_paper')->field('id,image,title,start_time,end_time,total_score,limit_time,user_ids')
            ->where('status', 'NORMAL')
            ->where('deletetime', NULL)
            ->whereRaw("((end_time = 0) or (end_time > {$now}))")
//            ->where($where_auth)
//            ->where('find_in_set(:user_ids,user_ids)', ['user_ids' => $this->auth->id])
            ->limit(2)
            ->order('start_time desc')
            ->select();

        if(empty($papers)){
            $papers = Db::name('exam_paper')->field('id,image,title,start_time,end_time,total_score,limit_time,user_ids')
                ->where('status', 'NORMAL')
                ->where('deletetime', NULL)
                ->limit(2)
                ->order('start_time desc')
                ->select();
        }

        foreach($papers as $key => &$val){
            $val['image'] = localpath_to_netpath($val['image']);
            $val['limit_time'] = $val['limit_time']/60; //秒转换分种
            $val['is_start'] = 0;

            if($val['start_time'] < $now && $now < $val['end_time'] && in_array($this->auth->id,explode(',',$val['user_ids'])) ){
                $val['is_start'] = 1;
            }

            unset($val['user_ids']);

        }

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

    /**
     * 首页
     * 全部培训3个
     * 未开始的 + 进行中的
     */
    public function index_trainactive(){
        $now    = time();

        //非实名,只能看一部分
        $where_auth = "";
        if($this->auth->idcard_status != 1){
            $where_auth = "(userauth_status = 1) or (find_in_set('".$this->auth->id."',user_ids) )";
        }

        $lists = Db::name('train_active')->field('id,name as title,logo_image,starttime,endtime,pingjia_time,pingjia_uid')
            ->where('pingjia_time',0)
            ->where('deletetime', NULL)
            ->where($where_auth)
            ->limit(2)
            ->order('starttime desc')
            ->select();

        foreach($lists as $key => &$val){
            $val['logo_image'] = localpath_to_netpath($val['logo_image']);

            if($val['pingjia_time'] != 0){
                $val['show_status'] = 3;
                $val['show_status_text'] = '已结束';
            }elseif($now < $val['starttime']){
                $val['show_status'] = 1;
                $val['show_status_text'] = '待开始';
            }else{
                $val['show_status'] = 2;
                $val['show_status_text'] = '进行中';
            }

        }

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

    //考试,更多,所有考试列表
    public function all_paper_list(){

        //非实名,只能看一部分
        $where_auth = "";
        if($this->auth->idcard_status != 1){
            $where_auth = "(find_in_set('".$this->auth->id."',user_ids) )";
        }

        $papers = Db::name('exam_paper')->field('id,image,title,start_time,end_time,total_score,limit_time')
            ->where('status', 'NORMAL')
            ->where('deletetime', NULL)
            ->where($where_auth)
            ->autopage()
            ->order('start_time desc')
            ->select();

        foreach($papers as $key => &$val){
            $val['image'] = localpath_to_netpath($val['image']);
            $val['limit_time'] = $val['limit_time']/60; //秒转换分种
        }

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

    //培训,更多,所有培训列表
    public function all_trainactive_list(){

        $type = input('type',1);
        $now  = time();

        $where = [];

        if($type == 3){
            $where['pingjia_time'] = ['NEQ',0];
        }elseif($type == 1){
            $where['starttime'] = ['gt',$now];
        }else{
//            $where['starttime'] = ['lt',$now];
//            $where['endtime'] = ['gt',$now];
            $where['pingjia_time'] = 0;
            $where['starttime'] = ['lt',$now];
        }

        //非实名,只能看一部分
        $where_auth = "";
        if($this->auth->idcard_status != 1){
            $where_auth = "(userauth_status = 1) or (find_in_set('".$this->auth->id."',user_ids) )";
        }

        $papers = Db::name('train_active')->field('id,name as title,logo_image,starttime,endtime,pingjia_time,pingjia_uid')
            ->where('deletetime', NULL)
            ->where($where)
            ->where($where_auth)
            ->autopage()
            ->order('starttime desc')
            ->select();

        foreach($papers as $key => &$val){
            $val['logo_image'] = localpath_to_netpath($val['logo_image']);

            if($val['pingjia_time'] != 0){ //时间或评价,都行
                $val['show_status'] = 3;
                $val['show_status_text'] = '已结束';
            }elseif($now < $val['starttime']){
                $val['show_status'] = 1;
                $val['show_status_text'] = '待开始';
            }else{
                $val['show_status'] = 2;
                $val['show_status_text'] = '进行中';
            }

        }

        $this->success(1, $papers);
    }

    //在线考试
    //我的考试
    //可参加考试
    //我的试卷
    public function my_paper_list(){
        $now    = time();
        $papers = Db::name('exam_paper')->field('id,title,start_time,end_time,total_score,limit_time')
            ->where('status', 'NORMAL')
            ->where('deletetime', NULL)
            ->whereRaw("((start_time = 0 and end_time = 0) or (start_time < {$now} and end_time > {$now}))")
            ->where('find_in_set(:user_ids,user_ids)', ['user_ids' => $this->auth->id])
            ->order('start_time desc')
            ->autopage()
            ->select();

        foreach($papers as $key => &$val){
            $val['limit_time'] = $val['limit_time']/60; //秒转换分种
            $val['is_start'] = 1;
        }

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

    //历史考试
    public function my_grade_list(){
        $field = [
            'grade.score','grade.is_pass','grade.total_score',
            'grade.total_count','grade.right_count','grade.error_count',
            'grade.grade_time','grade.start_time',
            'paper.title'
        ];
        $list = Db::name('exam_grade')->alias('grade')
            ->join('exam_paper paper','grade.paper_id = paper.id','LEFT')
            ->field($field)
            ->where('grade.user_id',$this->auth->id)
            ->order('grade.id desc')
            ->autopage()
            ->select();
        foreach($list as $key => &$val){
            $val['grade_time_text'] = Sec2Time($val['grade_time']);
        }

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


}