Passed
Push — master ( 288b46...98b0e3 )
by Nico
31:30 queued 08:00
created

MessageCollection   A

Complexity

Total Complexity 16

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Test Coverage

Coverage 92.59%

Importance

Changes 0
Metric Value
eloc 26
dl 0
loc 62
ccs 25
cts 27
cp 0.9259
rs 10
c 0
b 0
f 0
wmc 16

4 Methods

Rating   Name   Duplication   Size   Complexity  
A add() 0 3 1
A getRecipientIds() 0 21 6
A addMultiple() 0 4 2
B getInformationDump() 0 20 7
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Stu\Module\Ship\Lib\Message;
6
7
use Stu\Lib\InformationWrapper;
8
use Stu\Module\PlayerSetting\Lib\UserEnum;
9
10
final class MessageCollection implements MessageCollectionInterface
11
{
12
    /**
13
     * @var MessageInterface[]
14
     */
15
    private array $messages = [];
16
17 3
    public function add(MessageInterface $msg): void
18
    {
19 3
        $this->messages[] = $msg;
20
    }
21
22 2
    public function addMultiple(array $messages): void
23
    {
24 2
        foreach ($messages as $msg) {
25 2
            $this->messages[] = $msg;
26
        }
27
    }
28
29 1
    public function getRecipientIds(): array
30
    {
31 1
        $recipientIds = [];
32
33 1
        foreach ($this->messages as $message) {
34 1
            if ($message->isEmpty()) {
35
                continue;
36
            }
37
38 1
            $recipientId = $message->getRecipientId();
39
40 1
            if ($recipientId === null || $recipientId === UserEnum::USER_NOONE) {
41 1
                continue;
42
            }
43
44 1
            if (!in_array($recipientId, $recipientIds)) {
45 1
                $recipientIds[] = $recipientId;
46
            }
47
        }
48
49 1
        return $recipientIds;
50
    }
51
52 4
    public function getInformationDump(?int $userId = null): InformationWrapper
53
    {
54 4
        $result = new InformationWrapper();
55
56 4
        foreach ($this->messages as $message) {
57 4
            if ($message->isEmpty()) {
58
                continue;
59
            }
60
61
            if (
62 4
                $userId === null
63 1
                || $message->getSenderId() === $userId
64 1
                || $message->getRecipientId() === null
65 4
                || $message->getRecipientId() === $userId
66
            ) {
67 4
                $result->addInformationArray($message->getMessage());
68
            }
69
        }
70
71 4
        return $result;
72
    }
73
}
74