Files
kupshop/bundles/External/FlexiBeeBundle/Util/FlexiBeeConfiguration.php
2025-08-02 16:30:27 +02:00

109 lines
2.7 KiB
PHP

<?php
declare(strict_types=1);
namespace External\FlexiBeeBundle\Util;
use External\FlexiBeeBundle\Exception\FlexiBeeException;
use KupShop\SynchronizationBundle\Util\SynchronizationConfiguration;
class FlexiBeeConfiguration
{
private SynchronizationConfiguration $configuration;
public function __construct(SynchronizationConfiguration $configuration)
{
$this->configuration = $configuration;
}
/**
* Vrací konfiguraci pro API potřebnou pro připojení (url, user, password, company).
*/
public function getAPIConfig(): array
{
$api = $this->getConfig()['api'] ?? [];
foreach (['company', 'url', 'user', 'password'] as $requiredField) {
if (empty($api[$requiredField])) {
throw new FlexiBeeException(
sprintf('Missing required value in API config: %s', $requiredField)
);
}
}
return $api;
}
/**
* Vrací konfiguraci objednávek.
*/
public function getOrderConfig(): array
{
return $this->getConfig()['config']['order'] ?? [];
}
/**
* Vrací konfiguraci doprav.
*/
public function getDeliveriesConfig(): array
{
return $this->getConfig()['config']['delivery'] ?? [];
}
/**
* Vrací konfiguraci plateb.
*/
public function getPaymentsConfig(): array
{
return $this->getConfig()['config']['payment'] ?? [];
}
/**
* Vrací konfiguraci stavů objednávek.
*/
public function getOrderStatusesConfig(): array
{
return $this->getOrderConfig()['statuses'] ?? [];
}
/**
* Vrací povolené typy synchronizací, které se mají spouštět.
*/
public function getEnabledSynchronizerTypes(): array
{
return $this->getConfig()['config']['enabled_types'] ?? [];
}
/**
* Vrací ID skladů ve FlexiBee, které máme synchronizovat.
*/
public function getEnabledStoreIds(): array
{
return array_map(fn ($x) => (int) $x, $this->getConfig()['config']['stores'] ?? [0]);
}
public function getEnabledPricelists(): array
{
return array_map(fn ($x) => (int) $x, $this->getConfig()['config']['pricelists'] ?? [-1]);
}
public function refresh(): void
{
$this->configuration->clear('flexibee');
}
/**
* Vrací konfiguraci z settings tabulky.
*/
private function getConfig(): array
{
$dbcfg = \Settings::getDefault();
if (!$this->configuration->has('flexibee')) {
$this->configuration->set('flexibee', fn () => $dbcfg->loadValue('flexibee') ?: []);
}
return $this->configuration->get('flexibee');
}
}