src/Services/TranslationsImportService.php line 79

  1. <?php
  2. namespace App\Services;
  3. use App\Entity\Import;
  4. use App\Entity\Translation;
  5. use App\Repository\TranslationRepository;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\DependencyInjection\ContainerInterface;
  8. class TranslationsImportService
  9. {
  10.     public function importTranslations(string $fileName)
  11.     {
  12.         $filepath $this->container->getParameter('translations_import_directory');
  13.         $fullpath $filepath $fileName;
  14.         $alldatatsFromCsv = [];
  15.         $row 0;
  16.         if (($handle fopen($fullpath"r")) !== FALSE) {
  17.             while (($data fgetcsv($handle10000",")) !== FALSE) {
  18.                 if ($row == 0) {
  19.                     $row++;
  20.                     continue;
  21.                 }
  22.                 $num count($data);
  23.                 $row++;
  24.                 for ($c 0$c $num$c++) {
  25.                     $alldatatsFromCsv[$row][] = $data[$c];
  26.                 }
  27.             }
  28.             fclose($handle);
  29.         }
  30.         foreach ($alldatatsFromCsv as $oneLineFromCsv) {
  31.             $entity trim($oneLineFromCsv[0]);
  32.             $english trim($oneLineFromCsv[1]);
  33.             $french trim($oneLineFromCsv[2]);
  34.             $german trim($oneLineFromCsv[3]);
  35.             $spanish trim($oneLineFromCsv[4]);
  36.             $russian trim($oneLineFromCsv[5]);
  37.             $old_translation $this->translationRepository->findOneBy(['english' => $english]);
  38.             if ($old_translation) {
  39.                 if (
  40.                     $old_translation->getEntity() == $entity &&
  41.                     $old_translation->getEnglish() == $english &&
  42.                     $old_translation->getFrench() == $french &&
  43.                     $old_translation->getGerman() == $german &&
  44.                     $old_translation->getSpanish() == $spanish &&
  45.                     $old_translation->getRussian() == $russian
  46.                 ) {
  47.                     continue;
  48.                 } else {
  49.                     $old_translation
  50.                         ->setEntity($entity)
  51.                         ->setFrench($french)
  52.                         ->setGerman($german)
  53.                         ->setSpanish($spanish)
  54.                         ->setRussian($russian);
  55.                     $this->manager->flush();
  56.                 }
  57.             } else {
  58.                 $new_translation = new Translation();
  59.                 $new_translation->setEntity($entity)
  60.                     ->setEnglish($english)
  61.                     ->setFrench($french)
  62.                     ->setGerman($german)
  63.                     ->setSpanish($spanish)
  64.                     ->setRussian($russian);
  65.                 $this->manager->persist($new_translation);
  66.                 $this->manager->flush();
  67.             }
  68.         }
  69.         return null;
  70.     }
  71.     public function __construct(ContainerInterface $containerTranslationRepository $translationRepositoryEntityManagerInterface $manager)
  72.     {
  73.         $this->container $container;
  74.         $this->manager $manager;
  75.         $this->translationRepository $translationRepository;
  76.     }
  77. }