OrderRepositoryTrait::countSalesByAffiliate()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 9
nc 1
nop 1
dl 0
loc 11
rs 9.9666
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Odiseo\SyliusReferralsPlugin\Repository;
6
7
use Odiseo\SyliusReferralsPlugin\Entity\AffiliateInterface;
8
use Sylius\Component\Core\OrderPaymentStates;
9
10
trait OrderRepositoryTrait
11
{
12
    abstract public function createQueryBuilder($alias, $indexBy = null);
13
14
    public function countSalesByAffiliate(AffiliateInterface $affiliate): int
15
    {
16
        return (int) $this->createQueryBuilder('o')
17
            ->select('COUNT(o.id)')
18
            ->innerJoin('o.affiliateReferral', 'ar')
19
            ->andWhere('ar.affiliate = :affiliate')
20
            ->andWhere('o.paymentState = :paymentState')
21
            ->setParameter('affiliate', $affiliate)
22
            ->setParameter('paymentState', OrderPaymentStates::STATE_PAID)
23
            ->getQuery()
24
            ->getSingleScalarResult()
25
        ;
26
    }
27
}
28