Spaces:
No application file
No application file
namespace Mautic\PointBundle\Entity; | |
use Mautic\CoreBundle\Entity\CommonRepository; | |
/** | |
* @extends CommonRepository<LeadPointLog> | |
*/ | |
class LeadPointLogRepository 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.point_id') | |
->from(MAUTIC_TABLE_PREFIX.'point_lead_action_log', 'pl') | |
->where('pl.lead_id = '.$toLeadId) | |
->executeQuery() | |
->fetchAllAssociative(); | |
$actions = []; | |
foreach ($results as $r) { | |
$actions[] = $r['point_id']; | |
} | |
$q = $this->_em->getConnection()->createQueryBuilder(); | |
$q->update(MAUTIC_TABLE_PREFIX.'point_lead_action_log') | |
->set('lead_id', (int) $toLeadId) | |
->where('lead_id = '.(int) $fromLeadId); | |
if (!empty($actions)) { | |
$q->andWhere( | |
$q->expr()->notIn('point_id', $actions) | |
)->executeStatement(); | |
// Delete remaining leads as the new lead already belongs | |
$this->_em->getConnection()->createQueryBuilder() | |
->delete(MAUTIC_TABLE_PREFIX.'point_lead_action_log') | |
->where('lead_id = '.(int) $fromLeadId) | |
->executeStatement(); | |
} else { | |
$q->executeStatement(); | |
} | |
} | |
} | |