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
16643 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
 
16643 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
 
25
class CheckDiscoveryContactCommand extends Command
26
{
27
    /**
28
     *
29
     * @var AdapterInterface
30
     */
31
    private $adapter;
32
 
33
 
34
    /**
35
     *
36
     * @var  LoggerInterface
37
     */
38
    private $logger;
39
 
40
    /**
41
     *
42
     * @var array
43
     */
44
    private $config;
45
 
46
 
47
    /**
48
     *
49
     * @param AdapterInterface $adapter
50
     * @param LoggerInterface $logger
51
     * @param array $config
52
     */
16768 efrain 53
     public function __construct($adapter, $logger, $config)
16643 efrain 54
    {
55
        $this->adapter      = $adapter;
56
        $this->logger       = $logger;
57
        $this->config       = $config;
58
 
59
        parent::__construct();
60
    }
61
 
62
 
63
    protected function execute(InputInterface $input, OutputInterface $output) : int
64
    {
65
        $output->writeln('Inicio del proceso');
66
 
67
 
68
        $hydrator = new ObjectPropertyHydrator();
69
 
70
        $companyServiceMapper = CompanyServiceMapper::getInstance($this->adapter);
71
        $companiesService = $companyServiceMapper->fetchAllActiveByServiceId(Service::DISCOVERY_CONTACTS);
72
 
73
        $discoveryContactInteractionTypeMapper = DiscoveryContactInteractionTypeMapper::getInstance($this->adapter);
74
 
75
        $discoveryContactMapper = DiscoveryContactMapper::getInstance($this->adapter);
76
        $discoveryContactInteractionMapper = DiscoveryContactInteractionMapper::getInstance($this->adapter);
77
        $discoveryContactLogMapper = DiscoveryContactLogMapper::getInstance($this->adapter);
78
 
79
        foreach($companiesService as $companyService)
80
        {
81
            $discoveryContactInteractionTypeDefault = $discoveryContactInteractionTypeMapper->fetchOneDefaultByCompanyId($companyService->company_id);
82
            if(!$discoveryContactInteractionTypeDefault) {
83
                $discoveryContactInteractionTypeDefault = $discoveryContactInteractionTypeMapper->fetchOneFirstActiveByCompanyId($companyService->company_id);
84
                $discoveryContactInteractionTypeDefault->default = DiscoveryContactInteractionType::DEFAULT_YES;
85
                $discoveryContactInteractionTypeMapper->update($discoveryContactInteractionTypeDefault);
86
 
87
 
88
 
89
 
90
            }
91
 
92
 
93
            $discoveryContacts =  $discoveryContactMapper ->fetchAllByCompanyId($companyService->company_id);
94
            foreach($discoveryContacts as $discoveryContact)
95
            {
96
                $discoveryContactInteraction = $discoveryContactInteractionMapper->fetchByContactIdAndInteractionTypeId($discoveryContact->id, $discoveryContactInteractionTypeDefault->id);
97
                if($discoveryContactInteraction) {
98
                    $discoveryContactLog = $discoveryContactLogMapper->fetchOneFirstByContactId($discoveryContact->id);
99
                    if(!$discoveryContactLog) {
100
 
101
 
102
 
103
                        $discoveryContactLog = new DiscoveryContactLog();
104
                        $discoveryContactLog->company_id = $discoveryContactInteraction->company_id;
105
                        $discoveryContactLog->contact_id = $discoveryContact->id;
106
                        $discoveryContactLog->user_id = $discoveryContactInteraction->user_id;
107
                        $discoveryContactLog->activity =  'LABEL_RECORD_CONTACT_ADDED';
108
                        $discoveryContactLog->details = 'LABEL_FIRST_NAME : ' . $discoveryContact->first_name  . PHP_EOL .
109
                        'LABEL_LAST_NAME : ' . $discoveryContact->last_name  . PHP_EOL .
110
                        'LABEL_CORPORATE_EMAIL : ' . $discoveryContact->corporate_email  . PHP_EOL .
111
                        'LABEL_COMPANY : ' . $discoveryContact->company  . PHP_EOL .
112
                        'LABEL_POSITION : ' . $discoveryContact->position  . PHP_EOL .
113
                        'LABEL_COUNTRY : ' . $discoveryContact->country  . PHP_EOL;
114
 
115
 
116
                        if ($discoveryContact->state) {
117
                            $discoveryContactLog->details .= 'LABEL_STATE : ' . $discoveryContact->state  . PHP_EOL;
118
                        }
119
                        if ($discoveryContact->city) {
120
                            $discoveryContactLog->details .= 'LABEL_CITY : ' . $discoveryContact->city  . PHP_EOL;
121
                        }
122
                        if ($discoveryContact->phone) {
123
                            $discoveryContactLog->details .= 'LABEL_PHONE : ' . $discoveryContact->phone  . PHP_EOL;
124
                        }
125
                        if ($discoveryContact->phone_extension) {
126
                            $discoveryContactLog->details .= 'LABEL_PHONE_EXTENSION : ' . $discoveryContact->phone_extension  . PHP_EOL;
127
                        }
128
                        if ($discoveryContact->personal_email) {
129
                            $discoveryContactLog->details .= 'LABEL_PERSONAL_EMAIL : ' . $discoveryContact->personal_email  . PHP_EOL;
130
                        }
131
                        if ($discoveryContact->celular) {
132
                            $discoveryContactLog->details .= 'LABEL_CELULAR : ' . $discoveryContact->celular  . PHP_EOL;
133
                        }
134
                        if ($discoveryContact->whatsapp) {
135
                            $discoveryContactLog->details .= 'LABEL_WHATSAPP : ' . $discoveryContact->whatsapp  . PHP_EOL;
136
                        }
137
                        if ($discoveryContact->linkedin) {
138
                            $discoveryContactLog->details .= 'LABEL_LINKEDIN : ' . $discoveryContact->linkedin  . PHP_EOL;
139
                        }
140
 
141
                        $values = $hydrator->extract($discoveryContactLog);
142
                        $values['added_on'] = $discoveryContactInteraction->added_on;
143
 
144
 
145
                        $discoveryContactLogMapper->insertRaw($values);
146
 
147
                    }
148
 
149
                } else {
150
                    $discoveryContactLog = $discoveryContactLogMapper->fetchOneFirstByContactId($discoveryContact->id);
151
                    if($discoveryContactLog) {
152
                        $values = [
153
                            'company_id' => $discoveryContact->company_id,
154
                            'contact_id' => $discoveryContact->id,
155
                            'user_id' => $discoveryContactLog->user_id,
156
                            'interaction_type_id' => $discoveryContactInteractionTypeDefault->id,
157
                            'notes' => '',
158
                            'added_on' => $discoveryContactLog->added_on
159
                        ] ;
160
 
161
 
162
                        $discoveryContactInteractionMapper->insertRaw($values);
163
                    }
164
 
165
 
166
                }
167
 
168
 
169
            }
170
 
171
 
172
 
173
 
174
 
175
        }
176
 
177
 
178
 
179
 
180
 
181
        $output->writeln('Fin del proceso');
182
 
183
        return 0;
184
    }
185
 
186
 
187
 
188
}