Example #1
0
 protected function transDocSync($projectId, $bundle, $key, $locale, $fileName, $message, \DateTime $lastModification)
 {
     $projectId = intval($projectId);
     /** @var TranslatableDocument[] $documents */
     $document = $this->getTranslatableDocumentRepository()->findOneBy(array('projectId' => $projectId, 'bundle' => $bundle, 'key' => $key));
     if (!$document) {
         $document = new TranslatableDocument();
         $document->setProjectId($projectId);
         $document->setBundle($bundle);
         $document->setKey($key);
     }
     $files = $document->getFiles();
     $found = false;
     if ($files) {
         foreach ($files as $file) {
             if ($file->getLocale() == $locale) {
                 $found = true;
                 break;
             }
         }
     } else {
         $files = new ArrayCollection();
     }
     $updatedAt = $lastModification->getTimestamp();
     if ($found) {
         if ($file->getUpdatedAt() < $updatedAt) {
             $file->setMessage($message);
             $file->setUpdatedAt($updatedAt);
         } else {
             return $this->resultOk(array('updated' => false, 'message' => $file->getMessage(), 'updatedAt' => $file->getUpdatedAt()->format('c')));
         }
     } else {
         $file = new File();
         $file->setMessage($message);
         $file->setUpdatedAt($updatedAt);
         $file->setLocale($locale);
         $file->setFileName($fileName);
         $files->add($file);
     }
     $document->setFiles($files);
     $this->dm->persist($document);
     $this->dm->flush();
     return $this->resultOk(array('updated' => true));
 }