Proyectos de Subversion LeadersLinked - Backend

Rev

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;
    }
    
    
    
}