Spaces:
No application file
No application file
namespace Mautic\PointBundle\Entity; | |
use Mautic\CoreBundle\Entity\CommonRepository; | |
/** | |
* @extends CommonRepository<Point> | |
*/ | |
class PointRepository extends CommonRepository | |
{ | |
public function getEntities(array $args = []) | |
{ | |
$q = $this->_em | |
->createQueryBuilder() | |
->select($this->getTableAlias().', cat') | |
->from(Point::class, $this->getTableAlias()) | |
->leftJoin($this->getTableAlias().'.category', 'cat') | |
->leftJoin($this->getTableAlias().'.group', 'pl'); | |
$args['qb'] = $q; | |
return parent::getEntities($args); | |
} | |
public function getTableAlias(): string | |
{ | |
return 'p'; | |
} | |
/** | |
* Get array of published actions based on type. | |
* | |
* @param string $type | |
* | |
* @return array | |
*/ | |
public function getPublishedByType($type) | |
{ | |
$q = $this->createQueryBuilder('p') | |
->select('partial p.{id, type, name, delta, repeatable, properties}') | |
->setParameter('type', $type); | |
// make sure the published up and down dates are good | |
$expr = $this->getPublishedByDateExpression($q); | |
$expr->add($q->expr()->eq('p.type', ':type')); | |
$q->where($expr); | |
return $q->getQuery()->getResult(); | |
} | |
/** | |
* @param string $type | |
* @param int $leadId | |
*/ | |
public function getCompletedLeadActions($type, $leadId): array | |
{ | |
$q = $this->_em->getConnection()->createQueryBuilder() | |
->select('p.*') | |
->from(MAUTIC_TABLE_PREFIX.'point_lead_action_log', 'x') | |
->innerJoin('x', MAUTIC_TABLE_PREFIX.'points', 'p', 'x.point_id = p.id'); | |
// make sure the published up and down dates are good | |
$q->where( | |
$q->expr()->and( | |
$q->expr()->eq('p.type', ':type'), | |
$q->expr()->eq('x.lead_id', (int) $leadId) | |
) | |
) | |
->setParameter('type', $type); | |
$results = $q->executeQuery()->fetchAllAssociative(); | |
$return = []; | |
foreach ($results as $r) { | |
$return[$r['id']] = $r; | |
} | |
return $return; | |
} | |
/** | |
* @param int $leadId | |
*/ | |
public function getCompletedLeadActionsByLeadId($leadId): array | |
{ | |
$q = $this->_em->getConnection()->createQueryBuilder() | |
->select('p.*') | |
->from(MAUTIC_TABLE_PREFIX.'point_lead_action_log', 'x') | |
->innerJoin('x', MAUTIC_TABLE_PREFIX.'points', 'p', 'x.point_id = p.id'); | |
// make sure the published up and down dates are good | |
$q->where( | |
$q->expr()->and( | |
$q->expr()->eq('x.lead_id', (int) $leadId) | |
) | |
); | |
$results = $q->executeQuery()->fetchAllAssociative(); | |
$return = []; | |
foreach ($results as $r) { | |
$return[$r['id']] = $r; | |
} | |
return $return; | |
} | |
protected function addCatchAllWhereClause($q, $filter): array | |
{ | |
return $this->addStandardCatchAllWhereClause($q, $filter, [ | |
'p.name', | |
'p.description', | |
]); | |
} | |
protected function addSearchCommandWhereClause($q, $filter): array | |
{ | |
return $this->addStandardSearchCommandWhereClause($q, $filter); | |
} | |
/** | |
* @return string[] | |
*/ | |
public function getSearchCommands(): array | |
{ | |
return $this->getStandardSearchCommands(); | |
} | |
} | |