<?php

namespace addons\qyexternal\model;

use think\Model;

class Corp extends Model
{
    //数据库
    protected $connection = 'database';
    // 表名
    protected $name = 'qywx_corp';

    // 自动写入时间戳字段
    protected $autoWriteTimestamp = 'int';

    // 定义时间戳字段名
    protected $createTime = 'createtime';
    protected $updateTime = 'updatetime';
    protected $deleteTime = false;

    protected $field = [
        "id", "name", "admin_id", "corp_id", "agent_id", "external_secret", "contacts_secret", "token", "key", "remarks", "status", "weigh"
    ];

    public function follow()
    {
        return $this->hasMany('FollowUser', 'corp_id', 'corp_id');
    }

    public function contacts()
    {
        return $this->hasMany('Contacts', 'corp_id', 'corp_id');
    }

    public function chats()
    {
        return $this->hasMany('GroupChat', 'corp_id', 'corp_id');
    }

    public static function init()
    {
        self::event('before_write', function ($corp) {
            $corp->corp_id = trim($corp->corp_id);
            $corp->external_secret = trim($corp->external_secret);
            $corp->contacts_secret = trim($corp->contacts_secret);
            $corp->token = trim($corp->token);
            $corp->key = trim($corp->key);
        });

        self::event('after_write', function ($corp) {
            //$corp = new \Weasy\Core\Corp($corp->id);

            //$corp->sync();
        });

        self::event('after_delete', function ($corp) {
            $has = Corp::where("corp_id", $corp->corp_id)->find();
            if (! $has) {
                Contacts::where("corp_id", $corp->corp_id)->delete();
                FollowUser::where("corp_id", $corp->corp_id)->delete();
                GroupChat::where("corp_id", $corp->corp_id)->delete();
                UserBehavior::where("corp_id", $corp->corp_id)->delete();
                Logs::where("corp_id", $corp->corp_id)->delete();
            }
        });
    }

}