*/ class LeadTriggerLogRepository extends CommonRepository { /** * Updates lead ID (e.g. after a lead merge). */ public function updateLead($fromLeadId, $toLeadId): void { // First check to ensure the $toLead doesn't already exist $results = $this->_em->getConnection()->createQueryBuilder() ->select('pl.event_id') ->from(MAUTIC_TABLE_PREFIX.'point_lead_event_log', 'pl') ->where('pl.lead_id = '.$toLeadId) ->executeQuery() ->fetchAllAssociative(); $events = []; foreach ($results as $r) { $events[] = $r['event_id']; } $q = $this->_em->getConnection()->createQueryBuilder(); $q->update(MAUTIC_TABLE_PREFIX.'point_lead_event_log') ->set('lead_id', (int) $toLeadId) ->where('lead_id = '.(int) $fromLeadId); if (!empty($events)) { $q->andWhere( $q->expr()->notIn('event_id', $events) )->executeStatement(); // Delete remaining leads as the new lead already belongs $this->_em->getConnection()->createQueryBuilder() ->delete(MAUTIC_TABLE_PREFIX.'point_lead_event_log') ->where('lead_id = '.(int) $fromLeadId) ->executeStatement(); } else { $q->executeStatement(); } } }