Completed
Branch master (b38748)
by Hilmi Erdem
01:26
created

ShortMessageCollection::push()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 12
ccs 0
cts 10
cp 0
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 6
nc 2
nop 1
crap 6
1
<?php
2
3
namespace Erdemkeren\JetSms;
4
5
/**
6
 * Class ShortMessageCollection.
7
 */
8
class ShortMessageCollection
9
{
10
    /**
11
     * The items of the collection.
12
     *
13
     * @var array
14
     */
15
    protected $items = [];
16
17
    /**
18
     * Push a new short message to the given collection.
19
     *
20
     * @param ShortMessage $shortMessage
21
     *
22
     * @return self
23
     */
24
    public function push(ShortMessage $shortMessage)
25
    {
26
        if ($shortMessage->hasManyReceivers()) {
27
            throw new \LogicException(
28
                "Expected one receiver per short message, got many."
29
            );
30
        }
31
32
        $this->items[] = $shortMessage;
33
34
        return $this;
35
    }
36
37
    /**
38
     * Get the xml representation of the items.
39
     *
40
     * @return string
41
     */
42
    public function toXml()
43
    {
44
        $messages = '';
45
        /** @var ShortMessage $shortMessage */
46
        foreach ($this->items as $shortMessage) {
47
            $messages .= $shortMessage->toMultipleMessagesXml();
48
        }
49
50
        return $messages;
51
    }
52
53
    /**
54
     * Get the array presentation of the items.
55
     *
56
     * @return array
57
     */
58
    public function toArray()
59
    {
60
        $messages = [];
61
        $receivers = [];
62
63
        /** @var ShortMessage $shortMessage */
64
        foreach ($this->items as $shortMessage) {
65
            $messages[] = $shortMessage->body();
66
            $receivers[] = $shortMessage->receiversString();
67
        }
68
69
        return [
70
            'Msisdns'        => implode('|', $receivers),
71
            'Messages'       => implode('|', $messages),
72
        ];
73
    }
74
}
75