/
ActiveCampaignOrderRepositoryTrait.php
56 lines (47 loc) · 1.63 KB
/
ActiveCampaignOrderRepositoryTrait.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
declare(strict_types=1);
namespace Webgriffe\SyliusActiveCampaignPlugin\Doctrine\ORM;
use DateTimeInterface;
use Doctrine\ORM\EntityRepository;
use Sylius\Component\Core\Model\OrderInterface;
use Sylius\Component\Order\Model\OrderInterface as BaseOrderInterface;
trait ActiveCampaignOrderRepositoryTrait
{
/** @return OrderInterface[] */
public function findNewCartsNotModifiedSince(DateTimeInterface $terminalDate): array
{
assert($this instanceof EntityRepository);
return $this->createQueryBuilder('o')
->join('o.customer', 'c')
->andWhere('o.state = :state')
->andWhere('o.customer IS NOT NULL')
->andWhere('o.activeCampaignId IS NULL')
->andWhere('c.activeCampaignId IS NOT NULL')
->andWhere('o.updatedAt < :terminalDate')
->setParameter('state', BaseOrderInterface::STATE_CART)
->setParameter('terminalDate', $terminalDate)
->getQuery()
->getResult()
;
}
/** @return OrderInterface|null */
public function findOneToEnqueue(mixed $id): ?OrderInterface
{
assert($this instanceof EntityRepository);
return $this->findOneBy([
'id' => $id,
]);
}
/** @return OrderInterface[] */
public function findAllToEnqueue(): array
{
assert($this instanceof EntityRepository);
return $this->createQueryBuilder('o')
->join('o.customer', 'c')
->where('o.customer IS NOT NULL')
->andWhere('c.activeCampaignId IS NOT NULL')
->getQuery()
->getResult()
;
}
}