<?php namespace Api\Lib;
use Dever;
class App
{
    public function update($db, $data)
    {
        $func = Dever::db('app_func_work', 'api')->select(['app_func_id' => $data['id']]);
        if ($func) {
            $platform = [];
            Dever::db('app_platform', 'api')->delete(['app_id' => $data['app_id']]);
            foreach ($func as $k => $v) {
                $api = Dever::db('api', 'api')->find($v['api_id']);
                if ($api) {
                    $platform[$api['platform_id']] = $api['platform_id'];
                }
            }
            foreach ($platform as $k => $v) {
                Dever::db('app_platform', 'api')->insert(['app_id' => $data['app_id'], 'platform_id' => $v]);
            }
        }
    }

    public function updateApi($db, $data)
    {
        if (isset($data['notify']) && $data['notify'] == 2) {
            Dever::db('api/api_notify')->delete(['api_id' => $data['id']]);
        }
    }

    public function getPlatform($app)
    {
        $set['join'] = [
            [
                'table' => 'platform',
                'type' => 'left join',
                'on' => 'platform.id=app_platform.platform_id',
            ],
        ];
        $set['col'] = 'platform.id as id,platform.name as name';
        $platform = Dever::db('app_platform', 'api')->select(['app_id' => $app], $set);
        return $platform;
    }

    public function getSetting($platform_id)
    {
        return Dever::db('platform_setting', 'api')->select(['platform_id' => $platform_id]);
    }

    public function getCert($platform_id)
    {
        return Dever::db('platform_cert', 'api')->select(['platform_id' => $platform_id]);
    }

    public function getCertName($id)
    {
        $info = Dever::db('platform_cert', 'api')->find($id);
        return $info['name'];
    }

    public function getApi($func_id, $env = 1)
    {
        $set['join'] = [
            # t0
            [
                'table' => 'api_api',
                'type' => 'left join',
                'on' => 't0.id=main.api_id',
            ],
        ];
        $set['col'] = 't0.*';
        $set['order'] = 'main.sort asc,t0.id desc';
        $where['main.app_func_id'] = $func_id;
        if ($env) {
            $where['t0.env'] = $env;
        }
        return Dever::db('app_func_work', 'api')->select($where, $set);
    }

    public function getAppPlatform($app_id, $platform_id)
    {
        $app = Dever::db('app', 'api')->find($app_id);
        $platform = Dever::db('platform', 'api')->find($platform_id);
        return $app['name'] . '-' . $platform['name'];
    }
}