Spaces:
No application file
No application file
| namespace Mautic\EmailBundle\Entity; | |
| use Mautic\CoreBundle\Entity\CommonRepository; | |
| use Mautic\LeadBundle\Entity\Lead; | |
| use Mautic\LeadBundle\Entity\TimelineTrait; | |
| /** | |
| * @extends CommonRepository<EmailReply> | |
| */ | |
| final class EmailReplyRepository extends CommonRepository implements EmailReplyRepositoryInterface | |
| { | |
| use TimelineTrait; | |
| /** | |
| * @param int|Lead $leadId | |
| * | |
| * @return array | |
| */ | |
| public function getByLeadIdForTimeline($leadId, $options) | |
| { | |
| if ($leadId instanceof Lead) { | |
| $leadId = $leadId->getId(); | |
| } | |
| $qb = $this->_em->getConnection()->createQueryBuilder(); | |
| $qb->from(MAUTIC_TABLE_PREFIX.'email_stat_replies', 'reply') | |
| ->innerJoin('reply', MAUTIC_TABLE_PREFIX.'email_stats', 'stat', 'reply.stat_id = stat.id') | |
| ->leftJoin('stat', MAUTIC_TABLE_PREFIX.'emails', 'email', 'stat.email_id = email.id') | |
| ->leftJoin('stat', MAUTIC_TABLE_PREFIX.'email_copies', 'email_copy', 'stat.copy_id = email_copy.id') | |
| ->andWhere('stat.lead_id = :leadId') | |
| ->setParameter('leadId', $leadId); | |
| if (!empty($options['fromDate'])) { | |
| /** @var \DateTime $fromDate */ | |
| $fromDate = $options['fromDate']; | |
| $qb->andWhere('reply.date_replied >= :fromDate') | |
| ->setParameter('fromDate', $fromDate->format('Y-m-d H:i:s')); | |
| } | |
| if (!empty($options['toDate'])) { | |
| /** @var \DateTime $toDate */ | |
| $toDate = $options['toDate']; | |
| $qb->andWhere('reply.date_replied <= :toDate') | |
| ->setParameter('toDate', $toDate->format('Y-m-d H:i:s')); | |
| } | |
| $qb->addSelect('reply.id') | |
| ->addSelect('reply.date_replied') | |
| ->addSelect('stat.lead_id') | |
| ->addSelect('email.name AS email_name') | |
| ->addSelect('email.subject') | |
| ->addSelect('email_copy.subject AS storedSubject'); | |
| return $this->getTimelineResults( | |
| $qb, | |
| $options, | |
| 'storedSubject, email.subject', | |
| 'reply.date_replied', | |
| [], | |
| ['date_replied'] | |
| ); | |
| } | |
| public function getTableAlias(): string | |
| { | |
| return 'reply'; | |
| } | |
| } | |