MonnifyBankAccount::getAccountNumber()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 0
1
<?php
2
/**
3
 * Created By: Henry Ejemuta
4
 * Project: laravel-monnify
5
 * Class Name: MonnifyBankAccount.php
6
 * Date Created: 7/14/20
7
 * Time Created: 5:23 PM
8
 */
9
10
namespace HenryEjemuta\LaravelMonnify\Classes;
11
12
13
use HenryEjemuta\LaravelMonnify\Exceptions\MonnifyInvalidParameterException;
14
15
class MonnifyBankAccount
16
{
17
18
    private $accountNumber;
19
    private $bankCode;
20
    private $accountName;
21
22
    /**
23
     * MonnifyBankAccount constructor.
24
     * @param string $accountName
25
     * @param string $accountNumber
26
     * @param string $bankCode
27
     * @throws MonnifyInvalidParameterException
28
     */
29
    public function __construct(string $accountNumber, string $bankCode, string $accountName = '')
30
    {
31
        $accountNumber = trim($accountNumber);
32
        $bankCode = trim($bankCode);
33
34
        if (empty($accountNumber))
35
            throw new MonnifyInvalidParameterException('Account Number can\'t be empty');
36
        else if (preg_match('#[^0-9]#', $accountNumber))
37
            throw new MonnifyInvalidParameterException('Account Number must be numeric');
38
        else if (strlen("{$accountNumber}") !== 10)
39
            throw new MonnifyInvalidParameterException('Account Number must be exactly 10 digits');
40
41
        if (empty($bankCode))
42
            throw new MonnifyInvalidParameterException('Bank Code can\'t be empty');
43
        else if (preg_match('#[^0-9]#', $bankCode))
44
            throw new MonnifyInvalidParameterException('Bank Code must be numeric');
45
        else if (strlen("{$bankCode}") !== 3)
46
            throw new MonnifyInvalidParameterException('Bank Code must be exactly 3 digits');
47
48
        $this->accountName = trim($accountName);
49
        $this->accountNumber = trim($accountNumber);
50
        $this->bankCode = trim($bankCode);
51
    }
52
53
54
    public function getBankCodeAndAccountNumber(): array
55
    {
56
        return [
57
            "accountNumber" => $this->accountNumber,
58
            "bankCode" => $this->bankCode,
59
        ];
60
    }
61
62
    public function getAccountName(): string
63
    {
64
        return $this->accountName;
65
    }
66
67
    public function getAccountNumber(): string
68
    {
69
        return $this->accountNumber;
70
    }
71
72
73
    public function getBankCode(): string
74
    {
75
        return $this->bankCode;
76
    }
77
78
    public function __toString(): string
79
    {
80
        return "{$this->getAccountNumber()}-{$this->getBankCode()}-{$this->getAccountName()}";
81
    }
82
83
84
}
85