isAttributeChanged('cAdvowareAktenId')) { return; } $akteId = $entity->get('cAdvowareAktenId'); if (!$akteId) { return; // Document was unlinked from Akte } // Vermeide Loops $key = $akteId . '-' . $entity->getId() . '-propagate'; if (isset(self::$processing[$key])) { return; } self::$processing[$key] = true; try { // Load AdvowareAkte $akte = $this->entityManager->getEntity('CAdvowareAkten', $akteId); if (!$akte) { return; } // Prüfe ob Räumungsklage verknüpft ist $raumungsklage = $this->entityManager ->getRDBRepository('CAdvowareAkten') ->getRelation($akte, 'vmhRumungsklage') ->findOne(); if ($raumungsklage) { $this->relateDocument($raumungsklage, 'dokumentesvmhraumungsklage', $entity); } // Prüfe ob Mietinkasso verknüpft ist $mietinkasso = $this->entityManager ->getRDBRepository('CAdvowareAkten') ->getRelation($akte, 'mietinkasso') ->findOne(); if ($mietinkasso) { $this->relateDocument($mietinkasso, 'dokumentesmietinkasso', $entity); } // Also propagate to AICollection if Räumungsklage or Mietinkasso has one if ($raumungsklage) { $aiKnowledge = $this->entityManager ->getRDBRepository('CVmhRumungsklage') ->getRelation($raumungsklage, 'aIKnowledge') ->findOne(); if ($aiKnowledge) { $this->relateDocument($aiKnowledge, 'dokumentes', $entity); } } if ($mietinkasso) { $aiKnowledge = $this->entityManager ->getRDBRepository('CMietinkasso') ->getRelation($mietinkasso, 'aIKnowledge') ->findOne(); if ($aiKnowledge) { $this->relateDocument($aiKnowledge, 'dokumentes', $entity); } } } catch (\Exception $e) { $GLOBALS['log']->error('CAdvowareAkten PropagateDocumentsUp Error: ' . $e->getMessage()); } finally { unset(self::$processing[$key]); } } /** * Hilfsfunktion: Verknüpfe Dokument (nur wenn nicht bereits verknüpft) */ private function relateDocument(Entity $parentEntity, string $relationName, Entity $document): void { $repository = $this->entityManager->getRDBRepository($parentEntity->getEntityType()); $relation = $repository->getRelation($parentEntity, $relationName); // Prüfe ob bereits verknüpft $isRelated = $relation ->where(['id' => $document->getId()]) ->findOne(); if (!$isRelated) { $relation->relate($document); } } }