. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Modules\Crm\Hooks\Contact; use Espo\ORM\EntityManager; use Espo\ORM\Entity; class Opportunities { private EntityManager $entityManager; public function __construct(EntityManager $entityManager) { $this->entityManager = $entityManager; } /** * @param array $options * @param array $data */ public function afterRelate(Entity $entity, array $options = [], array $data = []): void { $relationName = $data['relationName'] ?? null; /** @var ?Entity $foreignEntity */ $foreignEntity = $data['foreignEntity'] ?? null; if ($relationName === 'opportunities' && $foreignEntity) { if (!$foreignEntity->get('contactId') && $foreignEntity->has('contactId')) { $foreignEntity->set('contactId', $entity->getId()); $this->entityManager->saveEntity($foreignEntity); } } } /** * @param array $options * @param array $data */ public function afterUnrelate(Entity $entity, array $options = [], array $data = []): void { $relationName = $data['relationName'] ?? null; /** @var ?Entity $foreignEntity */ $foreignEntity = $data['foreignEntity'] ?? null; if ($relationName === 'opportunities' && $foreignEntity) { if ($foreignEntity->get('contactId') && $foreignEntity->get('contactId') === $entity->getId()) { $foreignEntity->set('contactId', null); $this->entityManager->saveEntity($foreignEntity); } } } }