first commit

This commit is contained in:
2025-08-02 16:30:27 +02:00
commit 23646bfcee
14851 changed files with 1750626 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
<?php
declare(strict_types=1);
namespace External\PompoBundle\Command;
use External\PompoBundle\DataGo\Synchronizer\StockSynchronizer as DataGoStockSynchronizer;
use External\PompoBundle\DRS\Synchronizer\StockSynchronizer as DRSStockSynchronizer;
use External\PompoBundle\Util\Configuration;
use External\PompoBundle\Util\PompoUtil;
use KupShop\KupShopBundle\Util\Logging\SentryLogger;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class StockSynchronizationCommand extends Command
{
protected static $defaultName = 'pompo:sync_stock';
/** @required */
public Configuration $configuration;
/** @required */
public PompoUtil $pompoUtil;
/** @required */
public SentryLogger $sentryLogger;
/**
* Sklad se synchronizuje v samostatnem procesu, aby to bylo rychly, nic ho nebrzdilo a byl furt aktualni.
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$interval = 60;
while (true) {
sqlGetConnection()->connect();
$timeStart = microtime(true);
// DRS sklad synchronizujeme pouze na pompu
if ($this->configuration->isPompo()) {
// Sesynchronizuju DRS sklad - sklad prodejen
$this->synchronize(function () use ($output) {
$output->writeln('Synchronizing DRS stock...');
$this->pompoUtil->synchronizeDRS([DRSStockSynchronizer::getType()]);
$output->writeln('DRS Stock changes synchronized');
}, $output);
}
// Sesynchronizuju DataGo sklad - hlavni sklad
$this->synchronize(function () use ($output) {
$output->writeln('Synchronizing DataGo stock...');
$this->pompoUtil->synchronizeDataGo([DataGoStockSynchronizer::getType()]);
$output->writeln('DataGo Stock changes synchronized');
}, $output);
$executionTime = (int) (microtime(true) - $timeStart);
sqlGetConnection()->close();
$sleep = max((int) ($interval - $executionTime), 0);
$output->writeln(sprintf('Sleeping for %s seconds...', $sleep));
sleep($sleep);
}
}
private function synchronize(callable $callable, OutputInterface $output): void
{
try {
$callable();
} catch (\Throwable $e) {
if (isDevelopment()) {
throw $e;
}
$this->sentryLogger->captureException($e);
$output->writeln(sprintf('Some error occurred during dispatch: %s', $e->getMessage()));
}
}
}