<?php
/**
 * 分红记录
 * Created by PhpStorm.
 * User: wxj
 * Date: 2019/10/31
 * Time: 15:02
 */

namespace JinDouYun\Model\Holders;

use Exception;


use JinDouYun\Dao\Holders\DHoldersBonus;
use Mall\Framework\Core\ErrorCode;
use Mall\Framework\Core\StatusCode;
use Mall\Framework\Core\ResultWrapper;

use JinDouYun\Model\MBaseModel;
use Monolog\Handler\IFTTTHandler;


class MHoldersBonus extends MBaseModel
{

    private $obj;
    private $cutTable = 250000;
    private $enterpriseId;
    private $userCenterId;

    public function __construct($enterpriseId = '', $userCenterId = '')
    {
        $this->enterpriseId = $enterpriseId;
        $this->userCenterId = $userCenterId;
        parent::__construct($this->enterpriseId, $this->userCenterId);
        $this->obj = new DHoldersBonus('default');

    }

    /**
     * 列表
     * @param $where
     * @return mixed
     */
    public function list($where)
    {
        $limit = $where['limit'];
        unset($where['limit']);
        $offset = $where['offset'];
        unset($where['offset']);

        $join = 'Left Join qianniao_holders as b on a.hol_id = b.id';
        $wherein[] = ['a.en_id', '=', $this->enterpriseId];
        if (isset($where['name']))
        {
            $wherein[] = ['b.name|a.hol_id', '=', $where['name']];
        }

        if (isset($where['hol_id']))
        {
            $wherein[] = ['a.hol_id', '=', $where['hol_id']];
        }

        if (isset($where['start_time']))
        {
            $wherein[] = ['a.createTime', '>=', strtotime($where['start_time'])];
            $wherein[] = ['a.createTime', '<=', strtotime( date('Y-m-t 23:59:59', strtotime($where['start_time'])))];
        }

        if (isset($where['end_time']))
        {
            $wherein[] = ['a.createTime', '<=', strtotime($where['end_time'])];
        }

        if (isset($where['type'])){
            $wherein[] = ['a.type', '=', $where['type']];
        }



        $dbResult = $this->obj->select($wherein, 'a.*,b.name', 'id DESC', $limit, $offset, array(), true, false,$join);
        $count = $this->obj->count($wherein, [], $join);
        if ($dbResult === false) {
            return ResultWrapper::fail($this->obj->error(), ErrorCode::$dberror);
        }

        $return = [
            'data' => $dbResult,
            'total' => $count,
        ];

        if($return === false){
            return ResultWrapper::fail($this->obj->error(), ErrorCode::$dberror);
        }else{
            return ResultWrapper::success($return);
        }
    }


    /**
     * 详情
     * @param $where
     * @return mixed
     */
    public function details($where)
    {
        if(empty($where)){
            return ResultWrapper::success($where);
        }
        $dbResult = $this->obj->get($where);
        if($dbResult === false){
            return ResultWrapper::fail($this->obj->error(), ErrorCode::$dberror);
        }

        return ResultWrapper::success(self::formatInfo($dbResult));

    }

    /**
     * Doc: (des="添加")
     * User: XMing
     * Date: 2020/7/15
     * Time: 10:42 上午
     * @throws Exception
     * @param array $params
     * @return ResultWrapper
     */
    public function insert(array $params)
    {
        $res = $this->obj->insert($params);
        if ($res){
            return ResultWrapper::success('添加成功');
        }else{
            return ResultWrapper::fail($this->obj->error(), ErrorCode::$dberror);
        }

    }

    public function update($params, $id)
    {
        $data = $this->obj->get($id);
        if (!$data){
            return ResultWrapper::fail('数据不存在', ErrorCode::$dberror);
        }

        $dbResult = $this->obj->update($params,$id);
        if($dbResult === false){
            return ResultWrapper::fail($this->obj->error(), ErrorCode::$dberror);
        }
        return ResultWrapper::success('修改成功');

    }

    /**
     * 格式数据详情
     * @param $data
     * @return mixed
     */
    public function formatInfo($data)
    {
        return $data;
    }


    public function delete($where)
    {
        $res = $this->obj->delete($where);
        if ($res){
            return ResultWrapper::success('删除成功');
        }
        return ResultWrapper::fail($this->obj->error(), ErrorCode::$dberror);
    }


}