Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16766 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
16766 efrain 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Command;
6
 
7
use Symfony\Component\Console\Command\Command;
8
use Symfony\Component\Console\Input\InputInterface;
9
use Symfony\Component\Console\Output\OutputInterface;
10
use Laminas\Db\Adapter\AdapterInterface;
16768 efrain 11
 
16766 efrain 12
use Laminas\Log\LoggerInterface;
13
use GeoIp2\Database\Reader As GeoIp2Reader;
14
use LeadersLinked\Library\Functions;
15
use LeadersLinked\Mapper\CompanyServiceMapper;
16
use LeadersLinked\Mapper\DiscoveryContactInteractionTypeMapper;
17
use LeadersLinked\Model\Service;
18
use LeadersLinked\Model\DiscoveryContactInteractionType;
19
use LeadersLinked\Mapper\DiscoveryContactLogMapper;
20
use LeadersLinked\Mapper\DiscoveryContactMapper;
21
use LeadersLinked\Mapper\DiscoveryContactInteractionMapper;
22
use LeadersLinked\Model\DiscoveryContactLog;
23
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
24
use LeadersLinked\Mapper\QueryMapper;
25
use Laminas\Db\Sql\Expression;
26
 
27
class DuplicateDiscoveryContactCommand extends Command
28
{
29
    /**
30
     *
31
     * @var AdapterInterface
32
     */
33
    private $adapter;
34
 
35
 
36
    /**
37
     *
38
     * @var  LoggerInterface
39
     */
40
    private $logger;
41
 
42
    /**
43
     *
44
     * @var array
45
     */
46
    private $config;
47
 
48
 
49
    /**
50
     *
51
     * @param AdapterInterface $adapter
52
     * @param LoggerInterface $logger
53
     * @param array $config
54
     */
16768 efrain 55
     public function __construct($adapter, $logger, $config)
16766 efrain 56
    {
57
        $this->adapter      = $adapter;
58
        $this->logger       = $logger;
59
        $this->config       = $config;
60
 
61
        parent::__construct();
62
    }
63
 
64
 
65
    protected function execute(InputInterface $input, OutputInterface $output) : int
66
    {
67
        $output->writeln('Inicio del proceso');
68
 
69
 
70
        $queryMapper = QueryMapper::getInstance($this->adapter);
71
 
72
        $select = $queryMapper->getSql()->select();
73
        $select->from(DiscoveryContactMapper::_TABLE);
74
        $select->columns(['corporate_email']);
75
        $select->group('corporate_email');
76
        $select->having('COUNT(*) > 1');
77
 
78
 
79
 
80
 
81
        $records = $queryMapper->fetchAll($select);
82
 
83
        $output->writeln('hay ' . count($records) . ' registro(s) duplicado(s)');
84
 
85
        foreach($records as $record)
86
        {
87
            $sentence = 'DELETE FROM ' . DiscoveryContactMapper::_TABLE .
88
            ' WHERE corporate_email = :corporate_email ORDER BY id DESC LIMIT 1';
89
 
90
            $queryMapper->delete($sentence, [':corporate_email' => $record['corporate_email'] ]);
91
 
92
 
93
 
94
        }
95
 
96
 
97
 
98
 
99
        //echo $select->getSqlString($this->adapter->platform); exit;
100
 
101
 
102
 
103
 
104
        $output->writeln('Fin del proceso');
105
 
106
        return 0;
107
    }
108
 
109
 
110
 
111
}