Spaces:
No application file
No application file
namespace Mautic\PointBundle\Entity; | |
use Mautic\CoreBundle\Entity\CommonRepository; | |
/** | |
* @extends CommonRepository<LeadTriggerLog> | |
*/ | |
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(); | |
} | |
} | |
} | |