SMSMessenger::sendMessage()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 22
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 3.0987

Importance

Changes 0
Metric Value
cc 3
eloc 12
nc 3
nop 2
dl 0
loc 22
ccs 7
cts 9
cp 0.7778
crap 3.0987
rs 9.8666
c 0
b 0
f 0
1
<?php
2
3
namespace Messenger;
4
5
use Messenger\SMSProviders\SMSProvider;
6
7
class SMSMessenger extends Messenger
8
{
9
    /**
10
     * Sends an sms message with a given provider if they have been registered.
11
     *
12
     * @param string $providerName
13
     * @param string $to
14
     * @param string $message
15
     * @return array
16
     */
17 1
    public function sendMessageWith(string $providerName, string $to, string $message)
18
    {
19
        $result = array(
20 1
            'provider' => $providerName,
21
            'result' => [
22
                'sent' => false
23
            ]
24
        );
25
26 1
        if (isset($this->smsProviders[$providerName])) {
27 1
            $provider = $this->smsProviders[$providerName];
28
29 1
            if (!$provider->isValid()) {
30
                $result['result']['error'] = 'Invalid credentials';
31
                return $result;
32
            }
33
34 1
            $result['result'] = $provider->send($to, $message);
35
        }
36
37 1
        return $result;
38
    }
39
40
    /**
41
     * Sends an sms message.
42
     *
43
     * @param string $to
44
     * @param string $message
45
     * @return array
46
     */
47 1
    public function sendMessage(string $to, string $message)
48
    {
49
        $result = array(
50 1
            'provider' => 'Empty providers',
51
            'result' => [
52
                'sent' => false
53
            ]
54
        );
55
56 1
        foreach ($this->smsProviders() as $name => $provider) {
57 1
            $result['provider'] = $name;
58
59 1
            if (!$provider->isValid()) {
60
                $result['result']['error'] = 'Invalid credentials';
61
            } else {
62 1
                $result['result'] = $provider->send($to, $message);
63
            }
64
65 1
            return $result;
66
        }
67
68
        return $result;
69
    }
70
71
    /**
72
     * Returns all sms providers.
73
     *
74
     * @return SMSProvider[]
75
     */
76 2
    public function smsProviders()
77
    {
78 2
        return $this->smsProviders;
79
    }
80
}