Completed
Pull Request — master (#15)
by ARCANEDEV
11:13
created

Account   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 118
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 76.19%

Importance

Changes 7
Bugs 0 Features 2
Metric Value
c 7
b 0
f 2
dl 0
loc 118
wmc 11
lcom 0
cbo 1
ccs 16
cts 21
cp 0.7619
rs 10

7 Methods

Rating   Name   Duplication   Size   Complexity  
A instanceUrl() 0 4 2
A retrieve() 0 13 4
A create() 0 4 1
A save() 0 4 1
A all() 0 4 1
A delete() 0 4 1
A reject() 0 4 1
1
<?php namespace Arcanedev\Stripe\Resources;
2
3
use Arcanedev\Stripe\Contracts\Resources\AccountInterface;
4
use Arcanedev\Stripe\StripeResource;
5
6
/**
7
 * Class     Account
8
 *
9
 * @package  Arcanedev\Stripe\Resources
10
 * @author   ARCANEDEV <[email protected]>
11
 * @link     https://stripe.com/docs/api/php#account_object
12
 *
13
 * @property  null                              id
14
 * @property  string                            object                   // "account"
15
 * @property  string|null                       business_logo
16
 * @property  string                            business_name
17
 * @property  string|null                       business_url
18
 * @property  bool                              charges_enabled
19
 * @property  string                            country
20
 * @property  bool                              debit_negative_balances  // managed accounts only
21
 * @property  \Arcanedev\Stripe\StripeObject    decline_charge_on
22
 * @property  string                            default_currency
23
 * @property  bool                              details_submitted
24
 * @property  string                            display_name
25
 * @property  string                            email
26
 * @property  \Arcanedev\Stripe\Collection      external_accounts        // managed accounts only
27
 * @property  \Arcanedev\Stripe\AttachedObject  legal_entity             // managed accounts only
28
 * @property  bool                              managed
29
 * @property  string|null                       product_description      // managed accounts only
30
 * @property  string|null                       statement_descriptor
31
 * @property  string|null                       support_email
32
 * @property  string|null                       support_phone
33
 * @property  string|null                       support_url
34
 * @property  string                            timezone
35
 * @property  \Arcanedev\Stripe\AttachedObject  tos_acceptance           // managed accounts only
36
 * @property  \Arcanedev\Stripe\AttachedObject  transfer_schedule        // managed accounts only
37
 * @property  bool                              transfers_enabled
38
 * @property  \Arcanedev\Stripe\AttachedObject  verification
39
 */
40
class Account extends StripeResource implements AccountInterface
41
{
42
    /* ------------------------------------------------------------------------------------------------
43
     |  Main Functions
44
     | ------------------------------------------------------------------------------------------------
45
     */
46
    /**
47
     * Get the instance url.
48
     *
49
     * @return string
50
     */
51 35
    public function instanceUrl()
52
    {
53 35
        return is_null($this['id']) ? '/v1/account' : parent::instanceUrl();
54
    }
55
56
    /* ------------------------------------------------------------------------------------------------
57
     |  CRUD Functions
58
     | ------------------------------------------------------------------------------------------------
59
     */
60
    /**
61
     * Retrieve an account.
62
     *
63
     * @link   https://stripe.com/docs/api/php#retrieve_account
64
     *
65
     * @param  string|null        $id
66
     * @param  array|string|null  $options
67
     *
68
     * @return self
69
     */
70 15
    public static function retrieve($id = null, $options = null)
71
    {
72
        if (
73 15
            ! $options &&
74 15
            is_string($id) &&
75 11
            substr($id, 0, 3) === 'sk_'
76 12
        ) {
77
            $options = $id;
78
            $id      = null;
79
        }
80
81 15
        return self::scopedRetrieve($id, $options);
82
    }
83
84
    /**
85
     * Create an account.
86
     *
87
     * @link   https://stripe.com/docs/api/php#create_account
88
     *
89
     * @param  array|null         $params
90
     * @param  array|string|null  $options
91
     *
92
     * @return self
93
     */
94 30
    public static function create($params = null, $options = null)
95
    {
96 30
        return self::scopedCreate($params, $options);
97
    }
98
99
    /**
100
     * Save an account.
101
     *
102
     * @link   https://stripe.com/docs/api/php#update_account
103
     *
104
     * @param  array|string|null  $options
105
     *
106
     * @return self
107
     */
108 10
    public function save($options = null)
109
    {
110 10
        return $this->scopedSave($options);
111
    }
112
113
    /**
114
     * Get all accounts.
115
     *
116
     * @link   https://stripe.com/docs/api/php#list_accounts
117
     *
118
     * @param  array|null         $params
119
     * @param  array|string|null  $options
120
     *
121
     * @return \Arcanedev\Stripe\Collection|array
122
     */
123
    public static function all($params = null, $options = null)
124
    {
125
        return self::scopedAll($params, $options);
126
    }
127
128
    /**
129
     * Delete an account.
130
     *
131
     * @link   https://stripe.com/docs/api/php#delete_account
132
     *
133
     * @param  array|null         $params
134
     * @param  array|string|null  $options
135
     *
136
     * @return self
137
     */
138 5
    public function delete($params = null, $options = null)
139
    {
140 5
        return $this->scopedDelete($params, $options);
141
    }
142
143
    /**
144
     * Reject an account.
145
     *
146
     * @link   https://stripe.com/docs/api/php#reject_account
147
     *
148
     * @param  array|null         $params
149
     * @param  array|string|null  $options
150
     *
151
     * @return self
152
     */
153 5
    public function reject($params = null, $options = null)
154
    {
155 5
        return $this->scopedPostCall($this->instanceUrl() . '/reject', $params, $options);
156
    }
157
}
158