Passed
Push — master ( 843515...db168e )
by Diego
04:15
created

AffiliateReferralAssigner::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 4
rs 10
c 1
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Odiseo\SyliusReferralsPlugin\Assigner;
6
7
use Odiseo\SyliusReferralsPlugin\Entity\AffiliateReferralAwareInterface;
8
use Odiseo\SyliusReferralsPlugin\Entity\AffiliateReferralInterface;
9
use Odiseo\SyliusReferralsPlugin\Repository\AffiliateReferralRepositoryInterface;
10
use Sylius\Component\Core\Model\OrderInterface;
11
use Symfony\Component\HttpFoundation\Session\Session;
12
13
final class AffiliateReferralAssigner implements AffiliateReferralAssignerInterface
14
{
15
    private AffiliateReferralRepositoryInterface $affiliateReferralRepository;
16
17
    public function __construct(
18
        AffiliateReferralRepositoryInterface $affiliateReferralRepository
19
    ) {
20
        $this->affiliateReferralRepository = $affiliateReferralRepository;
21
    }
22
23
    public function assign(OrderInterface $order): void
24
    {
25
        $session = new Session();
26
27
        if (!$session->has(AffiliateReferralInterface::TOKEN_PARAM_NAME)) {
28
            return;
29
        }
30
31
        /** @var AffiliateReferralInterface|null $affiliateReferral */
32
        $affiliateReferral = $this->affiliateReferralRepository->findOneBy([
33
            'tokenValue' => $session->get(AffiliateReferralInterface::TOKEN_PARAM_NAME)
34
        ]);
35
36
        if (null === $affiliateReferral) {
37
            return;
38
        }
39
40
        if ($order instanceof AffiliateReferralAwareInterface) {
41
            $order->setAffiliateReferral($affiliateReferral);
42
        }
43
44
        $session->remove(AffiliateReferralInterface::TOKEN_PARAM_NAME);
45
    }
46
}
47