<?php

namespace KupShop\ElninoBundle\Admin\Tabs;

use KupShop\AdminBundle\Admin\WindowTab;
use KupShop\ElninoBundle\Util\Daktela;

class ElninoAdminDaktela extends WindowTab
{
    protected $title = 'flapDaktela';

    protected $template = 'window/admins.daktela.tpl';

    private $daktela;

    public function __construct(Daktela $daktela)
    {
        $this->daktela = $daktela;
    }

    public static function getTypes()
    {
        return [
            'admins' => 1,
            'adminEdit' => 1,
        ];
    }

    public static function isAllowed()
    {
        return findModule('elnino_daktela');
    }

    public function getVars($smarty_tpl_vars)
    {
        $vars = parent::getVars($smarty_tpl_vars);

        $data = $this->selectSQL('admins', ['id' => $this->getAdminID()], ['data'])->fetchColumn();
        $data = json_decode($data, true);

        $vars['custom_data'] = $data;

        return $vars;
    }

    public function handleUpdate()
    {
        $data = $this->getData();

        if ($accessToken = $this->daktela->getAccessToken($data['daktela']['login'], $data['daktela']['password'], $data['daktela']['workspace'] ?? null)) {
            $data['daktela']['access_token'] = $accessToken;
        } else {
            $data['daktela']['access_token'] = null;
        }

        $this->updateSQL('admins', ['data' => json_encode($data)], ['id' => $this->getAdminID()]);

        if (!$accessToken && !empty($data['daktela']['login']) && !empty($data['daktela']['password'])) {
            $this->window->returnError('Nepodařilo se získat přístupový klíč k Daktela. Překontrolujte přihlašovací údaje.');
        }
    }

    public function getAdminID()
    {
        if (!$this->getID()) {
            $id = getAdminUser()['id'];
        } else {
            $id = $this->getID();
        }

        return $id;
    }

    public function getLabel()
    {
        return 'Daktela';
    }
}
