<?php
class quarter_bonusAction extends action
{
    function __construct(){
        parent::__construct();
		$this->mod = new quarter_bonusMod();
    }

    function __destruct(){
    }

	/**
	 * Method 列表数据
	 */
    function list(){
		$where = '';
		if($_POST['filters']){
			$groups = json_decode(htmlspecialchars_decode($_POST['filters']),true);
			$where = $this->groups2sql($groups);
		}
		$data = $this->mod->list($where, $_POST['page'], $_POST['rows'], $_POST['sidx'], $_POST['sord']);
		echo json_encode($data, JSON_UNESCAPED_UNICODE);
	}
	/**
	 * Method 通过关键字取一行数据
	 */
	function getRowByKey($key){
		$row = $this->mod->getRowByKey('*',$key);
		if($row){
			$this->exitJson(0,$row);
		}else{
			$this->exitJson(2000);
		}
	}
	/**
	 * Method 唯一值检测
	 */
	function onlyCheck(){
		$result = false;
		$qb_id = (empty($_REQUEST['qb_id'])) ? 0 : $_REQUEST['qb_id'];
		$qb_staff_text = $_REQUEST['qb_staff_text'];
		if($qb_staff_text!=''){
			$where = sprintf("qb_id<>'%s' AND qb_staff_text='%s'",$qb_id,$qb_staff_text);
			if($this->mod->getOne('1',$where)){
				$result = true;
			}
		}
		echo ($result) ? 'false' : 'true'; //存在不通过，不存在通过
	}
	/**
	 * Method 添加操作
	 */
	function add(){
		$input = file_get_contents('php://input');
		$params = json_decode($input,true);
		$key = $this->mod->e['key'];
		$post = $this->mod->checkValueForm($params,[$key]);//添加时,主键可以为空
		if($post['error']){
			$this->exitJson(2001,$post['error']);
		}
		$data = $post['data'];
		$this->mod->Begin();
		$lastID = $this->mod->addRow($data);
		$dbOk = $this->mod->End();
		if($dbOk && $lastID>0){
			$this->exitJson(0,['key'=>$lastID]);
		}else{
			$this->exitJson(2000);
		}
	}
	/**
	 * Method 修改操作
	 */
	function edit(){
		$input = file_get_contents('php://input');
		$params = json_decode($input,true);
		$post = $this->mod->checkValueForm($params);
		if($post['error']){
			$this->exitJson(2001,$post['error']);
		}
		$data = $post['data'];
		$key = $data[$this->mod->e['key']];
		$this->mod->Begin();
		$this->mod->setRowByKey($data,$key);
		$dbOk = $this->mod->End();
		if($dbOk){
			$this->exitJson(0,['key'=>$key]);
		}else{
			$this->exitJson(2000);
		}
	}
	/**
	 * Method 删除操作
	 */
	function delete(){
		$input = file_get_contents('php://input');
		$params = json_decode($input,true);
		if(empty($params['value'])){
			$this->exitJson(2001);
		}
		$this->mod->Begin();
		$this->mod->deleteRows("qb_quarter_text='".trim($params['value'])."'");
		$dbOk = $this->mod->End();
		if($dbOk){
			$this->exitJson(0);
		}else{
			$this->exitJson(2000);
		}
	}
	/**
	 * 导入
	 */
	function import(){
		$object = new objectMod();
		$input = file_get_contents('php://input');
		$params = json_decode($input,true);
		$onamekeys = [];
		$qb_quarter='';
		foreach($params as $i=>$row){
			$line = $i+1;
			$v = trim();
			$w_yfgz = 0; //应发工资
			$w_money = 0; //实发工资
			foreach($row as $k=>$v){
				$v = trim($v);
				if($k=='qb_quarter'){
					preg_match('/(\d+)年(\d+)季度/',$v,$m);
					if(count($m)!=3 || !is_numeric($m[1]) || !is_numeric($m[2])){
						$this->exitJson(2001,'第 '.$line.' 行，奖金期间格式不正确, 格式例: 2020年1季度 或 20年1季度');
					}
					if(strlen($m[1])==2) $m[1] = '20'.$m[1];
					$v = $m[1].$m[2];
					if(strlen($v)!=5){
						$this->exitJson(2001,'第 '.$line.' 行，奖金期间格式不正确, 格式例: 2020年1季度 或 20年1季度');
					}
					if($qb_quarter==''){
						$qb_quarter = $v;
					}
					if($qb_quarter!=$v){
						$this->exitJson(2001,'第 '.$line.' 行，出现了新的奖金期间，一次仅支持导入一个季度的数据');
					}
					$row['qb_quarter_text'] = $m[1].'年'.$m[2].'季度';
				}else if($k=='qb_date'){
					$v = date('Y-m-d',strtotime(str_replace('.','-',$v)));
					if($v<='1970-01-01'){
						$this->exitJson(2001,'第 '.$line.' 行，不是一个正确的日期格式');
					}
				}else if($k=='qb_depa_text'){
					if(isset($onamekeys[$v])){
						$o_id = $onamekeys[$v];
					}else{
						$o_id = $object->getOidByName(1,$v);
						if(empty($o_id)){
							$this->exitJson(2001,'第 '.$line.' 行，部门 '.$v.'，没有在部门表中找到');
						}
						$onamekeys[$v] = $o_id;
					}
					$row['qb_depa'] = $o_id;
				}else if($k=='qb_staff_text'){
					$o_id = $object->getOidByName(2,$v);
					if(empty($o_id) || $v==''){
						$this->exitJson(2001,'第 '.$line.' 行，职员 '.$v.'，没有在职员表中找到');
					}
					$row['qb_staff'] = $o_id;
				}else if($k=='qb_zch_text'){
					$o_id = 0;
					if($v!=''){
						if(isset($onamekeys[$v])){
							$o_id = $onamekeys[$v];
						}else{
							$orow = $object->getRowByName(200,$v);
							if(empty($orow)){
								$this->exitJson(2001,'第 '.$line.' 行，转出行 '.$v.'，没有在科目表中找到');
							}
							$o_id = $orow['o_id'];
							$onamekeys[$v] = $o_id;
						}
					}
					$row['qb_zch'] = $o_id;
				}else if($k=='qb_subject_text'){
					$o_id = 0;
					if($v!=''){
						if(isset($onamekeys[$v])){
							$o_id = $onamekeys[$v];
						}else{
							$orow = $object->getRowByFullName(200,$v);
							if(empty($orow)){
								$this->exitJson(2001,'第 '.$line.' 行，转出行 '.$v.'，没有在科目表中找到');
							}
							$o_id = $orow['o_id'];
							$onamekeys[$v] = $o_id;
						}
					}
					$row['qb_subject'] = $o_id;
				}else if($k=='qb_yfgz' && $v==''){
					if($v=='')
						$v=0;
					else if(!is_numeric($v)){
						$this->exitJson(2001,'第 '.$line.' 行，应付工资 '.$v.'，不是一个数字');
					}
				}else if($k=='qb_money' && $v==''){
					if($v=='')
						$v=0;
					else if(!is_numeric($v)){
						$this->exitJson(2001,'第 '.$line.' 行，实发工资 '.$v.'，不是一个数字');
					}
				}
				$row[$k]=$v;
			}
			$params[$i] = $row;
		}
		$this->mod->Begin();
		$this->mod->import($qb_quarter,$params);
		$isOk = $this->mod->End();
		if($isOk)
			$this->exitJson(0,$params);
		else
			$this->exitJson(2000);
	}
}