<?php

namespace app\api\validate;

use think\Validate;

class TaskValidate extends Validate
{
    protected $rule = [
        'id' => ['require', 'integer', 'get:0'],//id
        'task_id' => ['require', 'integer', 'get:0'],//任务id
        'pageNum' => ['require', 'integer', 'gt:0'],//页码,gt在内置规则：https://www.kancloud.cn/manual/thinkphp6_0/1037629#_232
        'pageSize' => ['require', 'integer', 'gt:0'],//每页显示数量
        'task_class' => ['require', 'in' => '例行监测,专项监测'],//任务列表：例行监测
        'year' => ['require', 'date'], //年度
        'ispublic' => ['require', 'in' => '0,1,2,3,4,5'],//任务状态：0：未发布，1：执行中，2：已结束未完成，3：已结束已完成
        'starttime' => ['require', 'date'],//任务开始时间
        'endtime' => ['require', 'date'],//任务结束时间
        'task_name' => ['require', 'chsDash', 'length:4,50'],//任务名称

        'level' => ['require', 'in:0,1,2'],//任务优先级，0：一般，1：紧急，2：特急
        'batch' => ['require', 'in:一季度,二季度,三季度,四季度'],//批次，一季度，二季度，三季度，四季度
        // 'releaser' => ['require'], //发布单位
        'main_unit' => 'require',//牵头单位
//        'filenum' => 'require',//文件号---选填
//        'log' => 'require',//备注---选填
//        'file_url' => 'require',//附件地址
//        'file_name' => 'require',//附件名称

        'group_type' => ['require', 'in:检测机构,抽样机构,报告上传机构'],//在jcdw表中的groupname

    ];

    protected $message = [
        'id' => [
            'require' => [200000, '传参错误'],
            'integer' => [200001, '传参错误'],
            'gt' => [200002, '传参错误'],
        ],
        'task_id' => [
            'require' => [200000, '传参错误'],
            'integer' => [200001, '传参错误'],
            'gt' => [200002, '传参错误'],
        ],
        'pageNum' => [
            'require' => [200100, '页码不能为空'],
            'integer' => [200101, '页码必须为整数'],
            'gt' => [200102, '页码必须大于0'],
        ],
        'pageSize' => [
            'require' => [200200, '每页显示数量不能为空'],
            'integer' => [200201, '每页显示数量必须为整数'],
            'gt' => [200202, '每页显示数量必须大于0'],
        ],
        'task_class' => [
            'require' => [200300, '任务类别不能为空'],//任务列表：例行监测  专项监测
            'in' => [200301, '任务类别错误'],
        ],
        'year' => [
            'require' => [200400, '任务年度不能为空'],//年度
            'date' => [200401, '任务年度格式错误'],
        ],
        'ispublic' => [
            'require' => [200500, '任务状态不能为空'],//任务状态：0：未发布，1：执行中，2：已结束未完成，3：已结束已完成
            'in' => [200501, '任务状态选择错误'],
        ],
        'starttime' => [
            'require' => [200600, '任务开始时间不能为空'],//任务开始时间
            'date' => [200601, '任务开始时间格式错误'],
        ],
        'endtime' => [
            'require' => [200600, '任务结束时间不能为空'],//任务结束时间
            'date' => [200601, '任务结束时间格式错误'],
        ],
        'task_name' => [
            'require' => [200800, '任务名称不能为空'],//任务名称
            'chsDash' => [200801, '任务名称只能是汉字、字母、数字和下划线_及破折号-'],//任务名称
            'length' => [200802, '任务名称长度在4至50个字符之间'],//任务名称
        ],
        'level' => [
            'require' => [200900, '任务优先级不能为空'],//任务优先级，0：一般，1：紧急，2：特急
            'in' => [200901, '任务优先级格式错误'],//任务优先级，0：一般，1：紧急，2：特急
        ],
        'batch' => [
            'require' => [201000, '批次不能为空'],//批次，一季度，二季度，三季度，四季度
            'in' => [201000, '批次格式错误'],
        ],

        'main_unit' => [
            'require' => [201200, '牵头单位不能为空'],//牵头单位
        ],
        'group_type' => [
            'require' => [201300, '数据传输错误'],//jcdw表中的groupname
            'in' => [201301, '机构类型超出范围']
        ]

        //  'releaser.require'=>[201100, '发布单位不能为空'], //发布单位/
        //'releaser.in'=>[201101, '发布单位禁止填写'], //发布单位/

        //'filenum.require'=>[201300, '文件号不能为空'],//文件号---选填
        //'log.require'=>[201400, '备注不能为空'],//备注---选填
        //'file_url.require'=>[201500, '附件地址不能为空'],//附件地址
        //'file_name.require'=>[201600, '附件名称不能为空'],//附件名称
    ];


    // 监管端 获取任务列表 验证场景定义
    public function sceneSelectJgTaskList()
    {
        return $this->only(['task_class', 'pageNum', 'pageSize', 'year', 'ispublic', 'starttime', 'endtime'])
            ->remove('year', 'require')
            ->remove('ispublic', 'require')
            ->remove('starttime', 'require')
            ->remove('endtime', 'require');
    }

    //监管端 添加任务 验证场景定义
    public function sceneAddJgTaskItem()
    {
        return $this->only(['task_name', 'level', 'year', 'batch', 'starttime', 'endtime', 'filenum', 'task_class', 'ispublic', 'main_unit']);
    }

    // 牵头单位 获取任务列表 验证场景定义
    public function sceneSelectQtTaskList()
    {
        return $this->only(['task_class', 'task_name', 'year', 'ispublic', 'starttime', 'endtime', 'pageNum', 'pageSize'])
            ->remove('task_name', 'require|length')
            ->remove('year', 'require')
            ->remove('ispublic', 'require')
            ->remove('starttime', 'require')
            ->remove('endtime', 'require');
    }

    public function sceneGetTaskInfo()
    {
        return $this->only(['pageNum', 'pageSize', 'task_id'])
            ->remove('pageSize', 'require');
    }

    //牵头单位 发布任务 验证场景定义
    public function sceneQtRelease()
    {
        return $this->only(['task_id']);
    }

    //牵头单位 机构与地域 选择抽样机构，检测机构，报告上传机构
    public function sceneGetTestUnitList()
    {
        return $this->only(['pageNum', 'pageSize', 'group_type']);
    }

}