<?php

declare (strict_types=1);

namespace app\adminapi\controller;

use think\facade\Db;

class FlowController extends BaseAdminController
{

    public function index()
    {
        $type = get_config('approve.type');
        $list = Db::name('Flow')
            ->field('f.*,a.name as username,t.title as flow_cate')
            ->alias('f')
            ->join('Admin a', 'a.id = f.admin_id', 'left')
            ->join('FlowType t', 't.id = f.flow_cate', 'left')
            ->select()->toArray();
        foreach ($list as $key => &$value) {
            $department = Db::name('Department')->where('id', 'in', $value['department_ids'])->column('title');
            $value['department'] = implode(',', $department);
            if ($value['department'] == '') {
                $value['department'] = '全公司';
            }
            foreach ($type as $k => $val) {
                if ($value['type'] == $val['id']) {
                    $value['type_name'] = $val['title'];
                }
            }
        }
        return $this->success('success', $list);
    }

    //添加新增/编辑
    public function create()
    {
        $param = get_params();
        $param['flow_list'] = '';
        $flow_list = [];
        if ($param['check_type'] == 1) {
            $flowTypeData = isset($param['flowType']) ? $param['flowType'] : '';
            $flowUidsData = isset($param['flowUidsA']) ? $param['flowUidsA'] : '';
            foreach ($flowTypeData as $key => $value) {
                if (!$value) {
                    continue;
                }
                if ($value > 2 && $flowUidsData[$key] == '') {
                    return $this->fail('第' . ($key + 1) . '行的指定人未选择');
                }
                $item = [];
                $item['flow_type'] = $value;
                $item['flow_uids'] = $flowUidsData[$key];
                $flow_list[] = $item;
            }
            $param['flow_list'] = serialize($flow_list);
        }
        if ($param['check_type'] == 3) {
            $flowNameData = isset($param['flowName']) ? $param['flowName'] : '';
            $flowUidsData = isset($param['flowUidsB']) ? $param['flowUidsB'] : '';
            foreach ($flowNameData as $key => $value) {
                if (!$value) {
                    continue;
                }
                if ($flowUidsData[$key] == '') {
                    return $this->fail('第' . ($key + 1) . '行的指定人未选择');
                }
                $item = [];
                $item['flow_name'] = $value;
                $item['flow_type'] = 5;
                $item['flow_uids'] = $flowUidsData[$key];
                $flow_list[] = $item;
            }
            if (empty($flow_list)) {
                return $this->fail('审批流程信息未完善');
            }
            $param['flow_list'] = serialize($flow_list);
        }
        if ($param['id'] > 0) {
            $param['update_time'] = time();
            Db::name('Flow')->strict(false)->field(true)->update($param);
        } else {
            $param['admin_id'] = $this->adminId;
            $param['create_time'] = time();
            $mid = Db::name('Flow')->strict(false)->field(true)->insertGetId($param);
        }
        return $this->success('保存成功', [], 1, 1);
    }

    //禁用/启用
    public function status()
    {
        $param = get_params();
        $param['update_time'] = time();
        $res = Db::name('Flow')->where('id', $param['id'])->strict(false)->field('status,update_time')->update($param);
        if ($res !== false) {
            return $this->success('保存成功', [], 1, 1);
        } else {
            return $this->success('操作失败', [], 1, 1);
        }
    }
}