Files
kupshop/bundles/External/ZNZBundle/Resources/script/ImportUserGroupsRelationsScript.php
2025-08-02 16:30:27 +02:00

67 lines
2.0 KiB
PHP

<?php
declare(strict_types=1);
namespace External\ZNZBundle\Resources\script;
use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
use External\ZNZBundle\Synchronizers\UserSynchronizer;
use External\ZNZBundle\Util\ZNZUtil;
use KupShop\AdminBundle\Util\Script\Script;
use KupShop\KupShopBundle\Util\Compat\ServiceContainer;
use KupShop\KupShopBundle\Util\FileUtil;
use Query\Operator;
class ImportUserGroupsRelationsScript extends Script
{
protected static $name = '[ZNZ] Importovat zarazeni skupin k uzivatelum';
protected static $defaultParameters = [
'file' => 'data/files/fr-prodejna.csv',
];
protected function run(array $arguments)
{
$znzUtil = ServiceContainer::getService(ZNZUtil::class);
$inserted = 0;
$notFound = 0;
foreach (FileUtil::loadCSV($arguments['file'], ';') as $key => $item) {
if ($key === 0) {
continue;
}
$userId = sqlQueryBuilder()
->select('id')
->from('users')
->where(Operator::equals(['email' => $item[2]]))
->execute()->fetchOne();
if (!$userId) {
$this->log('User not found: '.$item[2]);
$notFound++;
continue;
}
if (!($groupId = $znzUtil->getMapping(UserSynchronizer::$typeGroups, $item[6]))) {
$this->log('User group not found: '.$item[6]);
continue;
}
try {
sqlQueryBuilder()
->insert('users_groups_relations')
->directValues(['id_user' => $userId, 'id_group' => $groupId])
->execute();
} catch (UniqueConstraintViolationException $e) {
}
$inserted++;
}
$this->log('Inserted user groups: '.$inserted);
$this->log('Not found users: '.$notFound);
}
}
return ImportUserGroupsRelationsScript::class;