src/Command/ImportChorusCommand.php line 20

Open in your IDE?
  1. <?php 
  2. namespace App\Command;
  3. use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
  4. use Symfony\Component\Console\Command\Command;
  5. use Symfony\Component\Console\Input\InputInterface;
  6. use Symfony\Component\Console\Output\OutputInterface;
  7. use Symfony\Component\Console\Input\InputArgument;
  8. use Symfony\Component\DependencyInjection\ContainerInterface;
  9. use Doctrine\ORM\Query\ResultSetMappingBuilder;
  10. use Doctrine\ORM\Query\ResultSetMapping;
  11. use Symfony\Component\Console\Style\SymfonyStyle;
  12. use Symfony\Component\Process\Process;
  13. use Symfony\Component\Process\Exception\ProcessFailedException;
  14. use Symfony\Component\Filesystem\Filesystem;
  15. class ImportChorusCommand extends ContainerAwareCommand
  16. {
  17.     private $container;
  18.     private $nb_thread;
  19.     private $my_argument_name;
  20.     
  21.     protected function configure()
  22.     {
  23.         $this
  24.         // the name of the command (the part after "bin/console")
  25.         ->setName('delef:import:chorus')
  26.         
  27.         // the short description shown while running "php bin/console list"
  28.         ->setDescription('Import Chorus database')
  29.         
  30.         // the full command description shown when running the command with
  31.         // the "--help" option
  32.         ->setHelp('');
  33.         
  34.         //add an argument to the task
  35.         //$this->addArgument('extension', InputArgument::REQUIRED, 'my_argument_name');
  36.         
  37.     }
  38.     
  39.     public function __construct(ContainerInterface $container)
  40.     {
  41.         // best practices recommend to call the parent constructor first and
  42.         // then set your own properties. That wouldn't work in this case
  43.         // because configure() needs the properties set in this constructor
  44.         //$this->requirePassword = $requirePassword;
  45.     
  46.         parent::__construct();
  47.         $this->container $container;
  48.         
  49.     }
  50.     protected function execute(InputInterface $inputOutputInterface $output)
  51.     {
  52.         $io = new SymfonyStyle($input$output);
  53.         
  54.         
  55.         //$this->my_argument_name = $input->getArgument('my_argument_name');
  56.         $io->title('Import des données chorus');
  57.         
  58.         //$file_url="https://chorus-pro.gouv.fr/cpp/static/far0037/courant/FAR0037.zip";
  59.         $file_url="https://cpro.chorus-pro.gouv.fr/cpp/static/far0037/courant/FAR0037.zip";
  60.         $io->note('url : '.$file_url);
  61.         $filesystem = new Filesystem();
  62.         $filesystem->mkdir('./var/chorus'0700);
  63.         
  64.         $filesystem->remove(['./var/chorus/FAR0037.zip']);
  65.         $filesystem->remove(['./var/chorus/extract/']);
  66.         $ch curl_init();
  67.         curl_setopt($chCURLOPT_URL$file_url);
  68.         curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
  69.         curl_setopt($chCURLOPT_RETURNTRANSFER1);
  70.         $data curl_exec ($ch);
  71.         $error curl_error($ch);
  72.         curl_close ($ch);
  73.         if(!empty($error)){
  74.             $io->error($error);
  75.             exit;
  76.         }else{
  77.             $io->text('Fichier correctement téléchargé.');
  78.             $file fopen('./var/chorus/FAR0037.zip'"w+");
  79.             fputs($file$data);
  80.             fclose($file);
  81.         }
  82.         
  83.         $zip = new \ZipArchive;
  84.         if ($zip->open('./var/chorus/FAR0037.zip') === TRUE) {
  85.             $filesystem->mkdir('./var/chorus/extract/'0700);
  86.             $zip->extractTo('./var/chorus/extract/');
  87.             $zip->close();
  88.             $files scandir('./var/chorus/extract/');
  89.             
  90.         } else {
  91.            $io->error("Le fichier './var/chorus/FAR0037.zip' ne peux pas être ouvert.");
  92.            exit;
  93.         }
  94.         
  95.         if(count($files)!=3){
  96.             $io->error("Impossible de détecter le fichier xml");
  97.             exit;
  98.         }else{
  99.             $xml_file=$files[2];
  100.             $io->text('Fichier trouvé : '.$xml_file);
  101.         }
  102.      
  103.         $string=file_get_contents('./var/chorus/extract/'.$xml_file);
  104.         $xml simplexml_load_string($string);
  105.         
  106.         //print_r($xml->CPPStructurePartenaireUnitaire);
  107.         
  108.         $number_items=count($xml);
  109.         $io->text('Nombre d\'enregistrements : '.$number_items);
  110.         $io->section('Insertion en base');
  111.         $io->progressStart($number_items);
  112.         
  113.         $cn $this->container->get('doctrine')->getManager()->getConnection();
  114.         
  115.         $stmt $cn->prepare("TRUNCATE `chorus`");
  116.         $stmt->execute();
  117.         $stmt $cn->prepare("SET autocommit=0");
  118.         $stmt->execute();
  119.         $stmt $cn->prepare("SET unique_checks=0;");
  120.         $stmt->execute();
  121.         $stmt $cn->prepare("SET foreign_key_checks=0;");
  122.         $stmt->execute();
  123.         foreach($xml as $t=>$i){
  124.             $type_identifiant    = @$i->TypeIdentifiant;
  125.             $identifiant        = @$i->Identifiant;
  126.             $raison_sociale      = @$i->RaisonSociale;
  127.             $adresse            = @$i->AdressePostale->Adresse;
  128.             $code_postal         = @$i->AdressePostale->CodePostal;
  129.             $ville              = @$i->AdressePostale->Ville;
  130.             $pays_code          = @$i->AdressePostale->Pays->Code;
  131.             $pays_libelle       = @$i->AdressePostale->Pays->Libelle;
  132.             $emetteur_edi        = @$i->EmetteurEdi=="true"?1:0;;
  133.             $recepteur_edi       = @$i->RecepteurEdi=="true"?1:0;
  134.             $gestion_statut_mise_en_paiement = @$i->GestionStatutMiseEnPaiement=="true"?1:0;
  135.             $gestion_engagement  = @$i->GestionEngagement=="true"?1:0;
  136.             $gestion_service     = @$i->GestionService=="true"?1:0;
  137.             $gestion_service_engagement=@$i->GestionServiceEngagement=="true"?1:0;
  138.             $est_MOA             = @$i->EstMOA=="true"?1:0;
  139.             $est_MOA_uniquement   = @$i->EstMOAUniquement=="true"?1:0;
  140.             $structure_active    = @$i->StructureActive=="true"?1:0;
  141.             //19974578700010
  142.             if(!empty($i->Services->Service)){
  143.                 foreach($i->Services->Service as $s){
  144.                    /* if($s->Code!="FACTURES_PUBLIQUES")
  145.                     {*/
  146.                         $service_code           $s->Code;
  147.                         $service_nom            $s->Nom;
  148.                         $service_gestion_EGMT   $s->GestionEGMT=="true"?1:0;
  149.                         $service_service_actif  $s->ServiceActif=="true"?1:0;
  150.                         
  151.                         
  152.                         $sql="INSERT INTO `chorus` (`id`, `type_identifiant`, `identifiant`, `raison_sociale`, `adresse`, `code_postal`, `ville`, `pays_code`, `pays_libelle`, `service_code`, `service_nom`, `service_gestion_egmt`, `service_service_actif`, `emetteur_edi`, `recepteur_edi`, `gestion_statut_mise_en_paiement`, `gestion_engagement`, `gestion_service`, `gestion_service_engagement`, `est_moa`, `est_moa_uniquement`, `structure_active`) VALUES (
  153.                             NULL,
  154.                             :type_identifiant,
  155.                             :identifiant,
  156.                             :raison_sociale,
  157.                             :adresse,
  158.                             :code_postal,
  159.                             :ville,
  160.                             :pays_code,
  161.                             :pays_libelle,
  162.                             :service_code,
  163.                             :service_nom,
  164.                             :service_gestion_EGMT,
  165.                             :service_service_actif,
  166.                             :emetteur_edi,
  167.                             :recepteur_edi,
  168.                             :gestion_statut_mise_en_paiement,
  169.                             :gestion_engagement,
  170.                             :gestion_service,
  171.                             :gestion_service_engagement,
  172.                             :est_MOA,
  173.                             :est_MOA_uniquement,
  174.                             :structure_active
  175.                             );";
  176.                         $stmt $cn->prepare($sql);
  177.                         $stmt->execute(array(
  178.                             'type_identifiant' => $type_identifiant,
  179.                             'identifiant' => $identifiant,
  180.                             'raison_sociale' => $raison_sociale,
  181.                             'adresse' => $adresse,
  182.                             'code_postal' => $code_postal,
  183.                             'ville' => $ville,
  184.                             'pays_code' => $pays_code,
  185.                             'pays_libelle' => $pays_libelle,
  186.                             'service_code' => $service_code,
  187.                             'pays_libelle' => $pays_libelle,
  188.                             'service_code' => $service_code,
  189.                             'service_nom' => $service_nom,
  190.                             'service_gestion_EGMT' => $service_gestion_EGMT,
  191.                             'service_service_actif' => $service_service_actif,
  192.                             'emetteur_edi' => $emetteur_edi,
  193.                             'recepteur_edi' => $recepteur_edi,
  194.                             'gestion_statut_mise_en_paiement' => $gestion_statut_mise_en_paiement,
  195.                             'gestion_engagement' => $gestion_engagement,
  196.                             'gestion_service' => $gestion_service,
  197.                             'gestion_service_engagement' => $gestion_service_engagement,
  198.                             'est_MOA' => $est_MOA,
  199.                             'est_MOA_uniquement' => $est_MOA_uniquement,
  200.                             'structure_active' => $structure_active,
  201.                     
  202.                         ));
  203.                    /* }   */
  204.                 }
  205.             }
  206.             $io->progressAdvance();
  207.         }
  208.         $stmt $cn->prepare("COMMIT;");
  209.         $stmt->execute();
  210.         $stmt $cn->prepare("SET unique_checks=1;");
  211.         $stmt->execute();
  212.         $stmt $cn->prepare("SET foreign_key_checks=1;");
  213.         $stmt->execute();
  214.         $io->progressFinish();
  215.        
  216.     }
  217. }
  218. ?>