SmsBuildSupportTrait   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 77
Duplicated Lines 0 %

Test Coverage

Coverage 48.39%

Importance

Changes 0
Metric Value
dl 0
loc 77
ccs 15
cts 31
cp 0.4839
rs 10
c 0
b 0
f 0
wmc 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A addMobile() 0 11 2
A simplifyAfterMinutes() 0 8 2
A addMobileToXml() 0 14 4
A checkAfterMinutes() 0 8 2
1
<?php
2
namespace Sender\Traits;
3
4
use Sender\Validation;
5
use Sender\MobileNumber;
6
use Sender\Sms\SmsDefineClass;
7
use Sender\Sms\SmsBuildClass;
8
use Sender\ExceptionClass\ParameterException;
9
10
/**
11
 * This trait for SMS OTP FUNCTIONS
12
 *
13
 * @package    Msg91 SMS&OTP package
14
 * @author     VenkatS <[email protected]>
15
 * @link       https://github.com/tesark/msg91-php
16
 * @license    MIT
17
 */
18
19
trait SmsBuildSupportTrait
20
{
21
    /**
22
     * This function for check afterminutes
23
     * @param int $category
24
     * @param string $key
25
     * @param array $buildSmsData
26
     *
27
     */
28 4
    public function checkAfterMinutes($category, $key, $value, $buildSmsData)
29
    {
30 4
        if ($this->isVaildAfterMinutes($value)) {
0 ignored issues
show
Bug introduced by
It seems like isVaildAfterMinutes() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

30
        if ($this->/** @scrutinizer ignore-call */ isVaildAfterMinutes($value)) {
Loading history...
31
            $buildSmsData = $this->buildData($category, $key, $value, $buildSmsData);
0 ignored issues
show
Bug introduced by
It seems like buildData() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

31
            /** @scrutinizer ignore-call */ 
32
            $buildSmsData = $this->buildData($category, $key, $value, $buildSmsData);
Loading history...
32
            return $buildSmsData;
33
        } else {
34 4
            $message = "Allowed between 10 to 20000 mintutes";
35 4
            throw ParameterException::invalidInput("afterminutes", "int", $value, $message);
36
        }
37
    }
38
    /**
39
     * This function for simplify afterminutes
40
     * @param int $category
41
     * @param string $key
42
     * @param array $buildSmsData
43
     *
44
     * @return array
45
     */
46 8
    public function simplifyAfterMinutes($category, $key, $buildSmsData, $value)
47
    {
48 8
        if ($this->isInterger($value)) {
0 ignored issues
show
Bug introduced by
It seems like isInterger() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

48
        if ($this->/** @scrutinizer ignore-call */ isInterger($value)) {
Loading history...
49 4
            $buildSmsData = $this->checkAfterMinutes($category, $key, $value, $buildSmsData);
50
        } else {
51 4
            throw ParameterException::invalidArrtibuteType($key, "int", $value);
52
        }
53
        return $buildSmsData;
54
    }
55
    /**
56
     * This function for Add mobile number to XML
57
     * @param array $xmlDoc
58
     * @param array $smsTag
59
     *
60
     */
61
    public function addMobileToXml($xmlDoc, $smsTag, $result)
62
    {
63
        if (!empty($result) && $result['value'] == true) {
64
            $mobiles = $result['mobile'];
65
            $len = Validation::getSize($mobiles);
66
            for ($k = 0; $k < $len; $k++) {
67
                $addressTag = $smsTag->appendChild($xmlDoc->createElement("ADDRESS"));
68
                $childAttr = $xmlDoc->createAttribute("TO");
69
                $childText = $xmlDoc->createTextNode($mobiles[$k]);
70
                $addressTag->appendChild($childAttr)->appendChild($childText);
71
            }
72
        } else {
73
            $message = "string comma seperate values you given:".$result['mobile'];
74
            throw ParameterException::invalidInput("mobile", "string", $result['mobile'], $message);
75
        }
76
    }
77
    /**
78
     * This function for sms array Build with mobilenumbers
79
     * @param array $buildSmsData
80
     * @param int $category
81
     *
82
     * @throws ParameterException missing parameters or return empty
83
     * @return array
84
     */
85 80
    public function addMobile($buildSmsData, $category)
86
    {
87 80
        $key = '';
88 80
        if ($category === 1) {
89 80
            $key = 'mobiles';
90
        } else {
91
            $key = 'mobile';
92
        }
93 80
        $value = $this->categoryWiseAddedMobile();
0 ignored issues
show
Bug introduced by
It seems like categoryWiseAddedMobile() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

93
        /** @scrutinizer ignore-call */ 
94
        $value = $this->categoryWiseAddedMobile();
Loading history...
94 80
        $buildSmsData = $this->checkIntegerOrString($key, $value, $buildSmsData, $category);
0 ignored issues
show
Bug introduced by
It seems like checkIntegerOrString() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

94
        /** @scrutinizer ignore-call */ 
95
        $buildSmsData = $this->checkIntegerOrString($key, $value, $buildSmsData, $category);
Loading history...
95 80
        return $buildSmsData;
96
    }
97
}
98