Rev 16768 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpdeclare(strict_types=1);namespace LeadersLinked\Command;use Symfony\Component\Console\Command\Command;use Symfony\Component\Console\Input\InputInterface;use Symfony\Component\Console\Output\OutputInterface;use Laminas\Db\Adapter\AdapterInterface;use Laminas\Log\LoggerInterface;use GeoIp2\Database\Reader As GeoIp2Reader;use LeadersLinked\Library\Functions;use LeadersLinked\Mapper\CompanyServiceMapper;use LeadersLinked\Mapper\DiscoveryContactInteractionTypeMapper;use LeadersLinked\Model\Service;use LeadersLinked\Model\DiscoveryContactInteractionType;use LeadersLinked\Mapper\DiscoveryContactLogMapper;use LeadersLinked\Mapper\DiscoveryContactMapper;use LeadersLinked\Mapper\DiscoveryContactInteractionMapper;use LeadersLinked\Model\DiscoveryContactLog;use LeadersLinked\Hydrator\ObjectPropertyHydrator;use LeadersLinked\Mapper\QueryMapper;use Laminas\Db\Sql\Expression;class DuplicateDiscoveryContactCommand extends Command{/**** @var \Laminas\Db\Adapter\AdapterInterface*/private $adapter;/**** @var \LeadersLinked\Cache\CacheInterface*/private $cache;/**** @var \Laminas\Log\LoggerInterface*/private $logger;/**** @var array*/private $config;/**** @var \Laminas\Mvc\I18n\Translator*/private $translator;/**** @param \Laminas\Db\Adapter\AdapterInterface $adapter* @param \LeadersLinked\Cache\CacheInterface $cache* @param \Laminas\Log\LoggerInterface* @param array $config* @param \Laminas\Mvc\I18n\Translator $translator*/public function __construct($adapter, $cache, $logger, $config, $translator){$this->adapter = $adapter;$this->cache = $cache;$this->logger = $logger;$this->config = $config;$this->translator = $translator;parent::__construct();}protected function execute(InputInterface $input, OutputInterface $output) : int{$output->writeln('Inicio del proceso');$queryMapper = QueryMapper::getInstance($this->adapter);$select = $queryMapper->getSql()->select();$select->from(DiscoveryContactMapper::_TABLE);$select->columns(['corporate_email']);$select->group('corporate_email');$select->having('COUNT(*) > 1');$records = $queryMapper->fetchAll($select);$output->writeln('hay ' . count($records) . ' registro(s) duplicado(s)');foreach($records as $record){$sentence = 'DELETE FROM ' . DiscoveryContactMapper::_TABLE .' WHERE corporate_email = :corporate_email ORDER BY id DESC LIMIT 1';$queryMapper->delete($sentence, [':corporate_email' => $record['corporate_email'] ]);}//echo $select->getSqlString($this->adapter->platform); exit;$output->writeln('Fin del proceso');return 0;}}