<?php

namespace Bastion\Services;

use Openguru\OpenCartFramework\Cache\CacheInterface;
use Openguru\OpenCartFramework\OpenCart\Decorators\OcRegistryDecorator;
use Openguru\OpenCartFramework\QueryBuilder\Connections\ConnectionInterface;
use Openguru\OpenCartFramework\Support\Arr;

class SettingsService
{
    private OcRegistryDecorator $registry;
    private CacheInterface $cache;
    private ConnectionInterface $connection;

    public function __construct(OcRegistryDecorator $registry, CacheInterface $cache, ConnectionInterface $connection)
    {
        $this->registry = $registry;
        $this->cache = $cache;
        $this->connection = $connection;
    }

    public function update(array $data): void
    {
        $this->connection->transaction(function () use ($data) {
            $this->registry->model_setting_setting->editSetting('module_telecart', [
                'module_telecart_settings' => $data,
            ]);

            $this->registry->model_setting_setting->editSetting('module_tgshop', [
                'module_tgshop_status' => Arr::get($data, 'app.app_enabled', false) ? 1 : 0,
            ]);
        });

        $this->cache->clear();
    }
}
