Rev 16768 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
<?php
declare(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;
}
}