<?php

namespace app\common\Model;

/**
 * 组织
 * Class Organization
 * @package app\common\Model
 */
class Organization extends CommonModel
{
    protected $append = [];

    /**
     * 创建组织
     * @param $memberData
     * @param array $data
     * @return Organization
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public static function createOrganization($memberData, $data = [])
    {
        $defaultAdminAuthId = 3;//默认管理员权限id
        $defaultMemberAuthId = 4;//默认成员权限id

        if (!isset($data['name'])) {
            $data['name'] = $memberData['name'] . '的个人项目';
        }
        $data['code'] = createUniqueCode('organization');
        $data['personal'] = 1;
        $data['create_time'] = nowTime();
        $data['owner_code'] = $memberData['code'];
        $organization = self::create($data);

        $defaultAdminAuth = ProjectAuth::get($defaultAdminAuthId)->toArray();
        $defaultMemberAuth = ProjectAuth::get($defaultMemberAuthId)->toArray();
        unset($defaultAdminAuth['id']);
        unset($defaultMemberAuth['id']);
        $defaultAdminAuth['organization_code'] = $defaultMemberAuth['organization_code'] = $data['code'];
        $defaultAdminAuth = ProjectAuth::create($defaultAdminAuth);
        $defaultMemberAuth = ProjectAuth::create($defaultMemberAuth);
        $defaultAdminAuthNode = ProjectAuthNode::where(['auth' => $defaultAdminAuthId])->select()->toArray();
        $defaultMemberAuthNode = ProjectAuthNode::where(['auth' => $defaultMemberAuthId])->select()->toArray();
        foreach ($defaultAdminAuthNode as &$item) {
            unset($item['id']);
            $item['auth'] = $defaultAdminAuth['id'];
            ProjectAuthNode::create($item);
        }
        foreach ($defaultMemberAuthNode as &$item) {
            unset($item['id']);
            $item['auth'] = $defaultMemberAuth['id'];
            ProjectAuthNode::create($item);
        }

        $memberAccountData = [
            'position' => '资深工程师',
            'department' => '某某公司-某某某事业群-某某平台部-某某技术部-BM',
            'code' => createUniqueCode('organization'),
            'member_code' => $memberData['code'],
            'organization_code' => $data['code'],
            'is_owner' => 1,
            'status' => 1,
            'create_time' => nowTime(),
            'avatar' => $memberData['avatar'],
            'name' => $memberData['name'],
            'email' => isset($memberData['email']) ? $memberData['email'] : '',
        ];
        MemberAccount::create($memberAccountData);
        return $organization;
    }


    public function edit($code, $data)
    {
        if (!$code) {
            throw new \Exception('请选择组织', 1);
        }
        $project = self::where(['code' => $code])->field('id', true)->find();
        if (!$project) {
            throw new \Exception('该组织不存在', 1);
        }
        $result = self::update($data, ['code' => $code]);
        return $result;
    }
}