documentationRepository->getDocumentationById((int) $data['projectDocumentId']); if ($documentation === null) { return; } $documentationContent = DB::transaction(function () use ($data, $documentation, $translatedText) { $values = []; $hashes = $this->completionChecker->execute( $this->getHashes($data['hashes']), ); foreach ($translatedText as $translatedTextKey => $translatedTextValue) { if ($hashes->isStatusWaiting($translatedTextKey) !== true) { continue; } $translatedTextValue = $this->noTranslateAttributeHandler->handleRemoveAttribute($translatedTextValue); $values[$translatedTextKey] = $translatedTextValue; } if (\count($values) === 0) { return null; } $documentationContent = $documentation->contents()->where('language_id', $data['languageId'])->first(); if ($documentationContent !== null) { $documentationContent->update($values); return $documentationContent; } $values['language_id'] = $data['languageId']; return $documentation->contents()->create($values); }); if (\config('translation_service.enable', false) && $documentationContent !== null) { $this->translateContent($documentation, $documentationContent, $data); } } private function translateContent(Documentation $documentation, DocumentationContent $documentationContent, array $data): void { $translateExceptLanguages = $data['exceptLanguages'] ?? []; $translateExceptLanguages[] = $data['languageId']; ProcessProjectDocumentationContent::dispatch($documentation->id, [$documentationContent->id], $translateExceptLanguages); } private function getHashes(array $hashes): Hashes { $hashesDto = new Hashes(); foreach ($hashes as $field => $hash) { $hashesDto->add((int) $hash['hashId'], $field, $hash['hash']); } return $hashesDto; } }