<?php
/**********************************************************************
 * ProxmoxVPS developed. (26.03.19)
 * *
 *
 *  CREATED BY MODULESGARDEN       ->       http://modulesgarden.com
 *  CONTACT                        ->       contact@modulesgarden.com
 *
 *
 * This software is furnished under a license and may be used and copied
 * only  in  accordance  with  the  terms  of such  license and with the
 * inclusion of the above copyright notice.  This software  or any other
 * copies thereof may not be provided or otherwise made available to any
 * other person.  No title to and  ownership of the  software is  hereby
 * transferred.
 *
 *
 **********************************************************************/

namespace ModulesGarden\Servers\ProxmoxCloudVps\App\Http\Actions;

use ModulesGarden\ProxmoxAddon\App\Configuration\Addon\Update\AddonUpgradeService;
use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
use ModulesGarden\ProxmoxAddon\App\Services\Cloud\ProductService;
use ModulesGarden\ProxmoxAddon\App\Enum\Cloud\CustomField;
use ModulesGarden\Servers\ProxmoxCloudVps\App\Helpers\ProxmoxAddonValidator;
use ModulesGarden\Servers\ProxmoxCloudVps\App\Http\Admin\Home;
use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Validators\Validator;
use ModulesGarden\Servers\ProxmoxCloudVps\Core\App\Controllers\Instances\AddonController;
use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Traits\WhmcsParams;

class AdminServicesTabFields extends AddonController
{
    use WhmcsParams;
    use ProductService;
    use ApiService;

    /**
     * @var AddonUpgradeService
     */
    private $addonUpgradeService;

    public function execute($params = null)
    {
        $action = $this->getRequestValue('mg-action') ? $this->request->get('mg-action') : 'index';

        if ($params['status'] != "Active" || ! $this->getWhmcsCustomField(CustomField::AUTHENTICATION))
        {
            return [];
        }
        try {
            ProxmoxAddonValidator::isInstalledOrFail();
            $this->addonUpgradeService = new AddonUpgradeService();
            $this->addonUpgradeService->run();
            return [Home::class, $action];
        } catch (\Exception $ex) {

            return ["Error" => "<span style='color: red'>" . $ex->getMessage() . "</span>"];
        }

    }
}