Passed
Push — master ( 8d6b85...0964b2 )
by Gerhard
19:05 queued 09:51
created

GroupProvider::createReceiver()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 9
ccs 6
cts 6
cp 1
rs 9.9666
c 0
b 0
f 0
cc 1
nc 1
nop 1
crap 1
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: gseidel
5
 * Date: 2019-12-13
6
 * Time: 18:44
7
 */
8
9
namespace Enhavo\Bundle\NewsletterBundle\Provider;
10
11
use Enhavo\Bundle\NewsletterBundle\Entity\LocalSubscriber;
12
use Enhavo\Bundle\NewsletterBundle\Entity\Newsletter;
13
use Enhavo\Bundle\NewsletterBundle\Entity\Receiver;
14
use Enhavo\Bundle\NewsletterBundle\Model\NewsletterInterface;
15
16
class GroupProvider implements ProviderInterface
17
{
18
    /** @var array */
19
    private $testReceiver;
20
21
    /**
22
     * SubscriptionProvider constructor.
23
     * @param array $testReceiver
24
     */
25 2
    public function __construct(array $testReceiver)
26
    {
27 2
        $this->testReceiver = $testReceiver;
28 2
    }
29
30
    /**
31
     * {@inheritdoc}
32
     */
33 1
    public function getReceivers(NewsletterInterface $newsletter): array
34
    {
35 1
        if(!$newsletter instanceof Newsletter) {
36
            throw new \InvalidArgumentException('Newsletter type is not supported by provider');
37
        }
38
39 1
        $receivers = [];
40 1
        $groups = $newsletter->getGroups();
41 1
        foreach ($groups as $group) {
42 1
            foreach ($group->getSubscribers() as $subscriber) {
43 1
                $receivers[] = $this->createReceiver($subscriber);
44
            }
45
        }
46 1
        return $receivers;
47
    }
48
49 1
    private function createReceiver(LocalSubscriber $subscriber)
50
    {
51 1
        $receiver = new Receiver();
52 1
        $receiver->setEmail($subscriber->getEmail());
53 1
        $receiver->setParameters([
54 1
            'token' => $subscriber->getToken()
55
        ]);
56 1
        return $receiver;
57
    }
58
59
    /**
60
     * {@inheritdoc}
61
     */
62 1
    public function getTestReceivers(NewsletterInterface $newsletter): array
63
    {
64 1
        $receiver = new Receiver();
65 1
        $receiver->setToken($this->testReceiver['token']);
66 1
        $receiver->setNewsletter($newsletter);
67 1
        $receiver->setParameters($this->testReceiver['parameters']);
68 1
        return [$receiver];
69
    }
70
}
71