Rev 16766 | Ir a la última revisión | 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 AdapterInterface
*/
private $adapter;
/**
*
* @var LoggerInterface
*/
private $logger;
/**
*
* @var array
*/
private $config;
/**
*
* @param AdapterInterface $adapter
* @param LoggerInterface $logger
* @param array $config
*/
public function __construct($adapter, $logger, $config)
{
$this->adapter = $adapter;
$this->logger = $logger;
$this->config = $config;
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;
}
}