ResponseData   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 58.33%

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 1
dl 0
loc 59
ccs 7
cts 12
cp 0.5833
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getIsOk() 0 4 1
A getCode() 0 10 3
A getMessage() 0 8 2
1
<?php
2
/**
3
 * @link https://github.com/yiiviet/yii2-esms
4
 * @copyright Copyright (c) 2017 Yii Viet
5
 * @license [New BSD License](http://www.opensource.org/licenses/bsd-license.php)
6
 */
7
8
9
namespace yiiviet\esms;
10
11
use vxm\gatewayclients\ResponseData as BaseResponseData;
12
13
/**
14
 * Lớp ResponseData dùng để tạo các đối tượng chứa dữ liệu nhận được từ eSMS.
15
 *
16
 * @author Vuong Minh <[email protected]>
17
 * @since 1.0
18
 */
19
class ResponseData extends BaseResponseData
20
{
21
22
    /**
23
     * @var array Danh sách chi tiết thông tin của các mã code từ eSMS.
24
     */
25
    public static $responseCodes = [
26
        100 => 'Request thành công',
27
        99 => 'Lỗi không xác định, thử lại sau',
28
        101 => 'Đăng nhập thất bại (api key hoặc secrect key không đúng)',
29
        102 => 'Tài khoản đã bị khóa',
30
        103 => 'Số dư tài khoản không đủ dể gửi tin',
31
        104 => 'Mã Brandname không đúng',
32
        105 => 'Id tin nhắn không tồn tại',
33
        118 => 'Loại tin nhắn không hợp lệ',
34
        119 => 'Brandname quảng cáo phải gửi ít nhất 20 số điện thoại',
35
        131 => 'Tin nhắn brandname quảng cáo độ dài tối đa 422 kí tự',
36
        132 => 'Không có quyền gửi tin nhắn đầu số cố định 8755'
37
    ];
38
39
    /**
40
     * @inheritdoc
41
     */
42 5
    public function getIsOk(): bool
43
    {
44 5
        return $this->getCode() === 100;
45
    }
46
47
    /**
48
     * Phương thức hổ trợ lấy mã code gửi từ eSMS.
49
     *
50
     * @return int|null Trả về mã code nếu nó có tồn tại hoặc null nếu không.
51
     */
52 5
    public function getCode(): ?int
53
    {
54 5
        if (isset($this['CodeResponse'])) {
55 2
            return (int)$this['CodeResponse'];
56 3
        } elseif (isset($this['CodeResult'])) {
57 3
            return (int)$this['CodeResult'];
58
        } else {
59
            return null;
60
        }
61
    }
62
63
    /**
64
     * Phương thức lấy thông tin message từ mã code.
65
     *
66
     * @return null|string Trả về null nếu như kết quả nhận được từ eSMS không có mã code và ngược lại là message từ eSMS.
67
     */
68
    public function getMessage(): ?string
69
    {
70
        if ($code = $this->getCode()) {
71
            return static::$responseCodes[$code] ?? null;
72
        } else {
73
            return null;
74
        }
75
    }
76
77
}
78