@@ 74-90 (lines=17) @@ | ||
71 | * @return int |
|
72 | * @throws \Doctrine\ORM\NonUniqueResultException |
|
73 | */ |
|
74 | public function getReturningCustomersWhoMadeOrderByPeriod(\DateTime $start, \DateTime $end, AclHelper $aclHelper) |
|
75 | { |
|
76 | $qb = $this->_em->createQueryBuilder(); |
|
77 | $qb->select('COUNT(customer.id) as val') |
|
78 | ->from('OroCRMMagentoBundle:Order', 'orders') |
|
79 | ->join('orders.customer', 'customer') |
|
80 | ->having('COUNT(orders.id) > 0') |
|
81 | ->andWhere('customer.createdAt < :dateStart') |
|
82 | ->andWhere($qb->expr()->between('orders.createdAt', ':dateStart', ':dateEnd')) |
|
83 | ->setParameter('dateStart', $start) |
|
84 | ->setParameter('dateEnd', $end); |
|
85 | $this->applyActiveChannelLimitation($qb); |
|
86 | ||
87 | $value = $aclHelper->apply($qb)->getOneOrNullResult(); |
|
88 | ||
89 | return $value['val'] ? : 0; |
|
90 | } |
|
91 | ||
92 | /** |
|
93 | * Returns data grouped by created_at, data_channel_id |
@@ 22-38 (lines=17) @@ | ||
19 | * @param array $dateRange |
|
20 | * @return array [itemCount, label] |
|
21 | */ |
|
22 | public function getOpportunitiesByLeadSource(AclHelper $aclHelper, $limit = 10, $dateRange = null) |
|
23 | { |
|
24 | $qb = $this->createQueryBuilder('l') |
|
25 | ->select('s.id as source, count(o.id) as itemCount') |
|
26 | ->leftJoin('l.opportunities', 'o') |
|
27 | ->leftJoin('l.source', 's') |
|
28 | ->groupBy('source'); |
|
29 | ||
30 | if ($dateRange) { |
|
31 | $qb->andWhere($qb->expr()->between('o.createdAt', ':dateStart', ':dateEnd')) |
|
32 | ->setParameter('dateStart', $dateRange['start']) |
|
33 | ->setParameter('dateEnd', $dateRange['end']); |
|
34 | } |
|
35 | $rows = $aclHelper->apply($qb)->getArrayResult(); |
|
36 | ||
37 | return $this->processOpportunitiesByLeadSource($rows, $limit); |
|
38 | } |
|
39 | ||
40 | /** |
|
41 | * @param array $rows |