67 lines
2.0 KiB
PHP
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;
|