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;
class CheckDiscoveryContactCommand 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');
$hydrator = new ObjectPropertyHydrator();
$companyServiceMapper = CompanyServiceMapper::getInstance($this->adapter);
$companiesService = $companyServiceMapper->fetchAllActiveByServiceId(Service::DISCOVERY_CONTACTS);
$discoveryContactInteractionTypeMapper = DiscoveryContactInteractionTypeMapper::getInstance($this->adapter);
$discoveryContactMapper = DiscoveryContactMapper::getInstance($this->adapter);
$discoveryContactInteractionMapper = DiscoveryContactInteractionMapper::getInstance($this->adapter);
$discoveryContactLogMapper = DiscoveryContactLogMapper::getInstance($this->adapter);
foreach($companiesService as $companyService)
{
$discoveryContactInteractionTypeDefault = $discoveryContactInteractionTypeMapper->fetchOneDefaultByCompanyId($companyService->company_id);
if(!$discoveryContactInteractionTypeDefault) {
$discoveryContactInteractionTypeDefault = $discoveryContactInteractionTypeMapper->fetchOneFirstActiveByCompanyId($companyService->company_id);
$discoveryContactInteractionTypeDefault->default = DiscoveryContactInteractionType::DEFAULT_YES;
$discoveryContactInteractionTypeMapper->update($discoveryContactInteractionTypeDefault);
}
$discoveryContacts = $discoveryContactMapper ->fetchAllByCompanyId($companyService->company_id);
foreach($discoveryContacts as $discoveryContact)
{
$discoveryContactInteraction = $discoveryContactInteractionMapper->fetchByContactIdAndInteractionTypeId($discoveryContact->id, $discoveryContactInteractionTypeDefault->id);
if($discoveryContactInteraction) {
$discoveryContactLog = $discoveryContactLogMapper->fetchOneFirstByContactId($discoveryContact->id);
if(!$discoveryContactLog) {
$discoveryContactLog = new DiscoveryContactLog();
$discoveryContactLog->company_id = $discoveryContactInteraction->company_id;
$discoveryContactLog->contact_id = $discoveryContact->id;
$discoveryContactLog->user_id = $discoveryContactInteraction->user_id;
$discoveryContactLog->activity = 'LABEL_RECORD_CONTACT_ADDED';
$discoveryContactLog->details = 'LABEL_FIRST_NAME : ' . $discoveryContact->first_name . PHP_EOL .
'LABEL_LAST_NAME : ' . $discoveryContact->last_name . PHP_EOL .
'LABEL_CORPORATE_EMAIL : ' . $discoveryContact->corporate_email . PHP_EOL .
'LABEL_COMPANY : ' . $discoveryContact->company . PHP_EOL .
'LABEL_POSITION : ' . $discoveryContact->position . PHP_EOL .
'LABEL_COUNTRY : ' . $discoveryContact->country . PHP_EOL;
if ($discoveryContact->state) {
$discoveryContactLog->details .= 'LABEL_STATE : ' . $discoveryContact->state . PHP_EOL;
}
if ($discoveryContact->city) {
$discoveryContactLog->details .= 'LABEL_CITY : ' . $discoveryContact->city . PHP_EOL;
}
if ($discoveryContact->phone) {
$discoveryContactLog->details .= 'LABEL_PHONE : ' . $discoveryContact->phone . PHP_EOL;
}
if ($discoveryContact->phone_extension) {
$discoveryContactLog->details .= 'LABEL_PHONE_EXTENSION : ' . $discoveryContact->phone_extension . PHP_EOL;
}
if ($discoveryContact->personal_email) {
$discoveryContactLog->details .= 'LABEL_PERSONAL_EMAIL : ' . $discoveryContact->personal_email . PHP_EOL;
}
if ($discoveryContact->celular) {
$discoveryContactLog->details .= 'LABEL_CELULAR : ' . $discoveryContact->celular . PHP_EOL;
}
if ($discoveryContact->whatsapp) {
$discoveryContactLog->details .= 'LABEL_WHATSAPP : ' . $discoveryContact->whatsapp . PHP_EOL;
}
if ($discoveryContact->linkedin) {
$discoveryContactLog->details .= 'LABEL_LINKEDIN : ' . $discoveryContact->linkedin . PHP_EOL;
}
$values = $hydrator->extract($discoveryContactLog);
$values['added_on'] = $discoveryContactInteraction->added_on;
$discoveryContactLogMapper->insertRaw($values);
}
} else {
$discoveryContactLog = $discoveryContactLogMapper->fetchOneFirstByContactId($discoveryContact->id);
if($discoveryContactLog) {
$values = [
'company_id' => $discoveryContact->company_id,
'contact_id' => $discoveryContact->id,
'user_id' => $discoveryContactLog->user_id,
'interaction_type_id' => $discoveryContactInteractionTypeDefault->id,
'notes' => '',
'added_on' => $discoveryContactLog->added_on
] ;
$discoveryContactInteractionMapper->insertRaw($values);
}
}
}
}
$output->writeln('Fin del proceso');
return 0;
}
}