Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6849 | 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 LeadersLinked\Mapper\UserMapper;
use LeadersLinked\Mapper\CompanyMapper;
use LeadersLinked\Mapper\CompanyUserMapper;
use LeadersLinked\Model\User;
use LeadersLinked\Model\UserType;
use LeadersLinked\Model\CompanyUser;
use Laminas\Mvc\I18n\Translator;
use LeadersLinked\Cache\CacheInterface;

class CheckDefaultFollowerAndConnectionForDefaultNetworkCommand extends Command
{
    /**
     *
     * @var \Laminas\Db\Adapter\AdapterInterface
     */
    private $adapter;
    
    /**
     *
     * @var \LeadersLinked\Cache\CacheInterface
     */
    private $cache;

    
    /**
     *
     * @var \Laminas\Log\LoggerInterface
     */
    private $logger;

    /**
     *
     * @var array
     */
    private $config;
    
    
    /**
     * 
     * @var \Laminas\Mvc\I18n\Translator
     */
    private $translator;
    
    
    /**
     *
     * @param \Laminas\Db\Adapter\AdapterInterface $adapter
     * @param \LeadersLinked\Cache\CacheInterface $cache
     * @param \Laminas\Log\LoggerInterface
     * @param array $config
     * @param \Laminas\Mvc\I18n\Translator $translator
     */
     public function __construct($adapter, $cache, $logger, $config, $translator)
    {
        $this->adapter      = $adapter;
        $this->cache        = $cache;
        $this->logger       = $logger;
        $this->config       = $config;
        $this->translator   = $translator;
        
        parent::__construct();
    }

    
    protected function execute(InputInterface $input, OutputInterface $output) : int
    {
        $output->writeln('Cargando las empresas');
        
        $companyMapper = CompanyMapper::getInstance($this->adapter);
        $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
        
        $companies = $companyMapper->fetchAll();
        
        
        foreach($companies as $company)
        {
            $user = $companyUserMapper->fetchOwnerByCompanyId($company->id);
            if(!$user) {
                $output->writeln('Agregando el propietario de la empresa : ' . $company->name);
                
                /** Creación del fake user propietario de la empresa */
                $user = new User();
                $user->email = 'fake-email'.$company->id;
                $user->first_name = substr($company->name, 0, 64);
                $user->last_name = substr($company->name, 64);
                $user->status = User::STATUS_INACTIVE;
                $user->blocked = User::BLOCKED_YES;
                $user->login_attempt = 0;
                $user->email_verified = User::EMAIL_VERIFIED_YES;
                $user->show_in_search = User::SHOW_IN_SEARCH_NO;
                $user->password = 'NO-PASSWORD';
                $user->usertype_id = UserType::COMPANY;
                
                $userMapper = UserMapper::getInstance($this->adapter);
                if($userMapper->insert($user)) {
                    $companyUser = new CompanyUser();
                    $companyUser->backend = CompanyUser::BACKEND_NO;
                    $companyUser->company_id = $company->id;
                    $companyUser->creator = CompanyUser::CREATOR_NO;
                    $companyUser->owner = CompanyUser::OWNER_YES;
                    $companyUser->status = CompanyUser::STATUS_ACCEPTED;
                    $companyUser->user_id = $user->id;
                    
                    $companyUserMapper->insert($companyUser);
                }
                
                
            }
        }


        $output->writeln('Fin del proceso');
        
        return 0;
    }
    
    
    
}