<?php

/**
 * +----------------------------------------------------------------------
 * | Created By PhpStorm
 * +----------------------------------------------------------------------
 * | DATE: 2021/8/4
 * +----------------------------------------------------------------------
 * | TIME: 14:11
 * +----------------------------------------------------------------------
 * | Author: YangXing(925032253@qq.com)
 * +----------------------------------------------------------------------
 * | Class: paramsetAction
 * +----------------------------------------------------------------------
 */

namespace admin\action\pro;


use admin\action\baseAction;
use model\pro\paramset;
use model\sample\modeltext;
use model\sample\numidx;
use model\sample\sample;
use servers\validator;

class paramsetAction extends baseAction
{


    public function getParameterListByPcId($pcId)
    {
        $paramset = new paramset();
        $list = $paramset->getListByPcId($pcId);
        $this->successJson($list);
    }



    public function getConfig()
    {
        //$pdf  = require_once(\mvc::$cfg['projectDir'].'/config/pdfcols.php');
        $rows  = (new \model\pdflib\pdfset())->getColsSetCfg();
        $this->successJson($rows);
    }

    public function getNode()
    {
        $paramset = new paramset();
        $result = $paramset->getNode(\mvc::$req['ptpa_id']);
        $this->successJson($result);
    }

    public function add()
    {
        $data = $this->getParamData();
        $rule = $this->getRules();
        $validator = new Validator($rule);
        $validator->validate($data);
        //如果有错误直接返回
        if($validator->getError()){
            $this->errorJson(500,$validator->getError());
        }
        $paramset = new paramset();
        $result = $paramset->add($data);
        if($result){
            $this->successJson();
        }else{
            $this->errorJson(500,'操作失败');
        }
    }

    public function edit()
    {
        $id = \mvc::$req['ptpa_id'];
        $data = $this->getParamData();
        $rule = $this->getRules();
        $validator = new validator($rule);
        $validator->validate($data);
        //如果有错误直接返回
        if($validator->getError()){
            $this->errorJson(500,$validator->getError());
        }
        $paramset = new paramset();
        $result = $paramset->set($id,$data);
        if($result){
            $this->successJson();
        }else{
            $this->errorJson(500,'操作失败');
        }
    }
    public function operation()
    {
        $req = \mvc::$req;
        $id = $req['id'];
        $oper = $req['oper'];
        $field = $req['field'];
        if(!empty($field)){
            $value = $req[$field];
        }else{
            $field = key($req);
            $value = current($req);
        }
        $numidx = new paramset();
        if($oper=='edit'){
            $numidx->setValue($id,$field,$value);
        }
        //$this->successJson();
    }

    public function scheduleList()
    {
        $req = \mvc::$req;
        $modeltext = new paramset();
        $data = $modeltext->scheduleList($req['id'] ,$req['filters'], $req['page'], $req['rows'], $req['sidx'], $req['sord']);
        $this->successJson($data);
    }

    public function scheduleEditCell()
    {
        $req = \mvc::$req;
        $id = $req['id'];
        $oper = $req['oper'];
        $field = $req['field'];
        if(!empty($field)){
            $value = $req[$field];
        }else{
            $field = key($req);
            $value = current($req);
        }
        $modeltext = new paramset();
        if($oper=='edit'){
            $modeltext->setValues($id,$field,$value);
        }
        //$this->successJson(['msg' => ''] );
    }

    public function scheduleAddRow($key)
    {
        $modeltext = new paramset();
        $modeltext->scheduleAddRow($key);
        $this->successJson();
    }

    public function scheduleDeleteRows($ids)
    {
        $modeltext = new paramset();
        $modeltext->scheduleDeleteRows($ids);
        $this->successJson();
    }

    public function deleteRows($ids)
    {
        $modeltext = new paramset();
        $modeltext->deleteRows($ids);
        $this->successJson();
    }

    /**
     * 获取参数
     * @return array
     */
    private function getParamData()
    {
         $arr = [
            'ptpa_cate_id'           => (int) \mvc::$req['ptpa_cate_id'],
            'tcd_name'         => trim(\mvc::$req['tcd_name']),
            'ptpa_type'            => \mvc::$req['ptpa_type'],
            'ptpa_length'          => trim(\mvc::$req['ptpa_length']) ?: 0,
            'ptpa_decimal'         => trim(\mvc::$req['ptpa_decimal']) ?: 0,
            'ptpa_unit'            => trim(\mvc::$req['ptpa_unit']) ?: '',
            'ptpa_is_search'       => \mvc::$req['ptpa_is_search'] == 'on' ? 1 : 0,
            'ptpa_search_area'     => \mvc::$req['ptpa_search_area'] == 'on' ? 1 : 0,
            'ptpa_in_showlist'     => \mvc::$req['ptpa_in_showlist'] == 'on' ? 1 : 0,
            'ptpa_in_showpage'     => \mvc::$req['ptpa_in_showpage'] == 'on' ? 1 : 0,
            'ptpa_is_website'      => \mvc::$req['ptpa_is_website'] == 'on' ? 1 : 0,
            'ptpa_search_or'       => \mvc::$req['ptpa_search_or'] == 'on' ? 1 : 0,
            'ptpa_tecdoc'       => \mvc::$req['ptpa_tecdoc'] == 'on' ? 1 : 0,
            'ptpa_is_edit'         => 1,
            'ptpa_search_diff'     => trim(\mvc::$req['ptpa_search_diff']),
            'ptpa_col_order'       => \mvc::$req['ptpa_col_order']  ?: 999,
            'ptpa_syn_field'       => \mvc::$req['ptpa_syn_field'] ?: '',
            'ptta_is_query_must'   => \mvc::$req['ptta_is_query_must'] == 'on' ? 1 : 0,
            'update_time'          => date('Y-m-d H:i:s'),
            'pdfcol'               => htmlspecialchars_decode(\mvc::$req['pdfcol']),
            'create_time'          => date('Y-m-d H:i:s'),
			'ptpa_width'           => (int) \mvc::$req['ptpa_width'],
			'param_strenval' =>\mvc::$req['param_strenval']
        ];
        //多语言
        $arr = langGetVals($arr,\mvc::$req,[''=>'']);
        return $arr;

    }

    /**
     * 验证规则
     * @return array
     */
    private function getRules()
    {
        return [
            ['ptpa_cate_id|'.lg('小类ID'),                           'require|min:1'],
            ['cn_name|'.lg('中文名'),                              'require'],
            ['en_name|'.lg('英文名'),                              'require'],
            ['ptpa_type|'.lg('参数类型'),                          'require'],
//            ['ptpa_length|'.lg('长度'),                            'require'],
//            ['ptpa_decimal|'.lg('小数位数'),                       'require'],
//            ['ptpa_unit|'.lg('单位'),                              'require'],
//            ['ptpa_is_search|'.lg('是否参与查询'),                  'require'],
//            ['ptpa_search_area|'.lg('是否有查询区间'),              'require'],
//            ['ptpa_in_showlist|'.lg('是否在列表显示'),              'require'],
//            ['ptpa_in_showpage|'.lg('是否在详情页显示'),            'require'],
//            ['ptpa_is_show|'.lg('是否全部显示'),                    'require'],
//            ['ptpa_is_edit|'.lg('是否允许编辑'),                    'require'],
//            ['ptpa_col_order|'.lg('显示顺序'),                      'require'],
//            ['ptpa_syn_field|'.lg('同步字段'),                      'require'],
//            ['ptta_update_time|'.lg('更新时间'),                    'require'],
        ];
    }

    public function copyCommonParam()
    {
        $req = \mvc::$req;
        $ptpa_id = $req['ptpa_id'] ?explode(',',$req['ptpa_id']):[];
        $cate_id = (int)$req['cate_id'];
        if(!$ptpa_id||!$cate_id) return $this->errorJson(-1,'参数错误');
        $paramset = new paramset();
        $data= $paramset->copyCommonParam($cate_id,$ptpa_id);
        return $this->successJson($data);
    }

}