<?php
declare(strict_types=1);

namespace api\modules\oauth\models;

use api\modules\oauth\exceptions\UnsupportedOauthClientType;
use common\models\OauthClient;

class OauthClientFormFactory {

    /**
     * @param OauthClient $client
     *
     * @return OauthClientTypeForm
     * @throws UnsupportedOauthClientType
     */
    public static function create(OauthClient $client): OauthClientTypeForm {
        switch ($client->type) {
            case OauthClient::TYPE_APPLICATION:
                return new ApplicationType([
                    'name' => $client->name,
                    'websiteUrl' => $client->website_url,
                    'description' => $client->description,
                    'redirectUri' => $client->redirect_uri,
                ]);
            case OauthClient::TYPE_MINECRAFT_SERVER:
                return new MinecraftServerType([
                    'name' => $client->name,
                    'websiteUrl' => $client->website_url,
                    'minecraftServerIp' => $client->minecraft_server_ip,
                ]);
        }

        throw new UnsupportedOauthClientType($client->type);
    }

}