Transfers::populate()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 33
Code Lines 25

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 1 Features 0
Metric Value
cc 1
eloc 25
nc 1
nop 1
dl 0
loc 33
rs 8.8571
c 2
b 1
f 0
1
<?php
2
3
namespace Moip\Resource;
4
5
use Moip\Helper\Filters;
6
use Moip\Helper\Pagination;
7
use Requests;
8
use stdClass;
9
10
/**
11
 * Class Transfers.
12
 */
13
class Transfers extends MoipResource
14
{
15
    /**
16
     * @const string
17
     */
18
    const PATH = 'transfers';
19
20
    /**
21
     * @const string
22
     */
23
    const METHOD = 'BANK_ACCOUNT';
24
25
    /**
26
     * @const string
27
     */
28
    const TYPE = 'CHECKING';
29
30
    /**
31
     * @const string
32
     */
33
    const TYPE_HOLD = 'CPF';
34
35
    /**
36
     * Initializes new instances.
37
     */
38 View Code Duplication
    protected function initialize()
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
39
    {
40
        $this->data = new stdClass();
41
        $this->data->transferInstrument = new stdClass();
42
        $this->data->transferInstrument->bankAccount = new stdClass();
43
        $this->data->transferInstrument->bankAccount->holder = new stdClass();
44
        $this->data->transferInstrument->bankAccount->holder->taxDocument = new stdClass();
45
    }
46
47
    /**
48
     * @param stdClass $response
49
     *
50
     * @return Transfers
51
     */
52
    protected function populate(stdClass $response)
53
    {
54
        $transfers = clone $this;
55
56
        $transfers->data->id = $this->getIfSet('id', $response);
57
        $transfers->data->ownId = $this->getIfSet('ownId', $response);
58
        $transfers->data->amount = $this->getIfSet('amount', $response);
59
60
        $transfer_instrument = $this->getIfSet('transferInstrument', $response);
61
        $transfers->data->transferInstrument = new stdClass();
62
        $transfers->data->transferInstrument->method = $this->getIfSet('method', $transfer_instrument);
63
64
        $bank_account = $this->getIfSet('bankAccount', $transfer_instrument);
65
        $transfers->data->transferInstrument->bankAccount = new stdClass();
66
        $transfers->data->transferInstrument->bankAccount->id = $this->getIfSet('id', $bank_account);
67
        $transfers->data->transferInstrument->bankAccount->type = $this->getIfSet('type', $bank_account);
68
        $transfers->data->transferInstrument->bankAccount->bankNumber = $this->getIfSet('bankNumber', $bank_account);
69
        $transfers->data->transferInstrument->bankAccount->agencyNumber = $this->getIfSet('agencyNumber', $bank_account);
70
        $transfers->data->transferInstrument->bankAccount->agencyCheckNumber = $this->getIfSet('agencyCheckNumber', $bank_account);
71
        $transfers->data->transferInstrument->bankAccount->accountNumber = $this->getIfSet('accountNumber', $bank_account);
72
        $transfers->data->transferInstrument->bankAccount->accountCheckNumber = $this->getIfSet('accountCheckNumber', $bank_account);
73
74
        $holder = $this->getIfSet('holder', $bank_account);
75
        $transfers->data->transferInstrument->bankAccount->holder = new stdClass();
76
        $transfers->data->transferInstrument->bankAccount->holder->fullname = $this->getIfSet('fullname', $holder);
77
78
        $tax_document = $this->getIfSet('taxDocument', $holder);
79
        $this->data->transferInstrument->bankAccount->holder->taxDocument = new stdClass();
80
        $this->data->transferInstrument->bankAccount->holder->taxDocument->type = $this->getIfSet('type', $tax_document);
81
        $this->data->transferInstrument->bankAccount->holder->taxDocument->number = $this->getIfSet('number', $tax_document);
82
83
        return $transfers;
84
    }
85
86
    /**
87
     * Set info of transfers.
88
     *
89
     * @param int    $amount
90
     * @param string $bankNumber         Bank number. possible values: 001, 237, 341, 041.
91
     * @param int    $agencyNumber
92
     * @param int    $agencyCheckNumber
93
     * @param int    $accountNumber
94
     * @param int    $accountCheckNumber
95
     *
96
     * @return $this
97
     */
98
    public function setTransfers(
99
        $amount,
100
        $bankNumber,
101
        $agencyNumber,
102
        $agencyCheckNumber,
103
        $accountNumber,
104
        $accountCheckNumber
105
    ) {
106
        $this->data->amount = $amount;
107
        $this->data->transferInstrument->method = self::METHOD;
108
        $this->data->transferInstrument->bankAccount->type = self::TYPE;
109
        $this->data->transferInstrument->bankAccount->bankNumber = $bankNumber;
110
        $this->data->transferInstrument->bankAccount->agencyNumber = $agencyNumber;
111
        $this->data->transferInstrument->bankAccount->agencyCheckNumber = $agencyCheckNumber;
112
        $this->data->transferInstrument->bankAccount->accountNumber = $accountNumber;
113
        $this->data->transferInstrument->bankAccount->accountCheckNumber = $accountCheckNumber;
114
115
        return $this;
116
    }
117
118
    /**
119
     * Set info of transfers to a saved bank account.
120
     *
121
     * @param int    $amount        Amount
122
     * @param string $bankAccountId Saved bank account id.
123
     *
124
     * @return $this
125
     */
126
    public function setTransfersToBankAccount($amount, $bankAccountId)
127
    {
128
        $this->data->amount = $amount;
129
        $this->data->transferInstrument->method = self::METHOD;
130
        $this->data->transferInstrument->bankAccount->id = $bankAccountId;
131
132
        return $this;
133
    }
134
135
    /**
136
     * Returns transfer.
137
     *
138
     * @return stdClass
139
     */
140
    public function getTransfers()
141
    {
142
        return $this->data;
143
    }
144
145
    /**
146
     * Get own request id. external reference.
147
     *
148
     * @param mixed $ownId id
149
     *
150
     * @return $this
151
     */
152
    public function setOwnId($ownId)
153
    {
154
        $this->data->ownId = $ownId;
155
156
        return $this;
157
    }
158
159
    /**
160
     * Set info of holder.
161
     *
162
     * @param string $fullname
163
     * @param int    $taxDocument
164
     *
165
     * @return $this
166
     */
167
    public function setHolder($fullname, $taxDocument)
168
    {
169
        $this->data->transferInstrument->bankAccount->holder->fullname = $fullname;
170
        $this->data->transferInstrument->bankAccount->holder->taxDocument->type = self::TYPE_HOLD;
171
        $this->data->transferInstrument->bankAccount->holder->taxDocument->number = $taxDocument;
172
173
        return $this;
174
    }
175
176
    /**
177
     * Returns transfer holder.
178
     *
179
     * @return stdClass
180
     */
181
    public function getHolder()
182
    {
183
        return $this->data->transferInstrument->bankAccount->holder;
184
    }
185
186
    /**
187
     * Execute Tranfers.
188
     *
189
     * @return Transfers
190
     */
191 View Code Duplication
    public function execute()
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
192
    {
193
        $path = sprintf('/%s/%s', MoipResource::VERSION, self::PATH);
194
195
        $response = $this->httpRequest($path, Requests::POST, $this);
196
197
        return $this->populate($response);
198
    }
199
200
    /**
201
     * Revert Tranfers.
202
     *
203
     * @param string $id Transfer id.
204
     *
205
     * @return Transfers
206
     */
207 View Code Duplication
    public function revert($id)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
208
    {
209
        $path = sprintf('/%s/%s/%s/%s', MoipResource::VERSION, self::PATH, $id, 'reverse');
210
211
        $response = $this->httpRequest($path, Requests::POST, $this);
212
213
        return $this->populate($response);
214
    }
215
216
    /**
217
     * Get a Transfer.
218
     *
219
     * @param string $id Transfer id.
220
     *
221
     * @return stdClass
222
     */
223
    public function get($id)
224
    {
225
        return $this->getByPath(sprintf('/%s/%s/%s', MoipResource::VERSION, self::PATH, $id));
226
    }
227
228
    /**
229
     * Create a new Transfers list instance.
230
     *
231
     * @return \Moip\Resource\TransfersList
232
     */
233
    public function getList(Pagination $pagination = null, Filters $filters = null, $qParam = '')
234
    {
235
        $transfersList = new TransfersList($this->moip);
236
237
        return $transfersList->get($pagination, $filters, $qParam);
238
    }
239
240
    /**
241
     * Get MoIP Transfers id.
242
     *
243
     * @return string
244
     */
245
    public function getId()
246
    {
247
        return $this->getIfSet('id');
248
    }
249
250
    /**
251
     * Get own request id. external reference.
252
     *
253
     * @return mixed
254
     */
255
    public function getOwnId()
256
    {
257
        return $this->getIfSet('ownId');
258
    }
259
}
260