Completed
Push — master ( b9ac23...46f1c6 )
by ARCANEDEV
7s
created

Account   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 114
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 78.26%

Importance

Changes 8
Bugs 0 Features 2
Metric Value
c 8
b 0
f 2
dl 0
loc 114
wmc 11
lcom 0
cbo 1
ccs 18
cts 23
cp 0.7826
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 6 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
     * @link   https://stripe.com/docs/api/php#retrieve_account
63
     *
64
     * @param  string|null        $id
65
     * @param  array|string|null  $options
66
     *
67
     * @return self
68
     */
69 15
    public static function retrieve($id = null, $options = null)
70
    {
71
        if (
72 15
            ! $options &&
73 15
            is_string($id) &&
74 11
            substr($id, 0, 3) === 'sk_'
75 12
        ) {
76
            $options = $id;
77
            $id      = null;
78
        }
79
80 15
        return self::scopedRetrieve($id, $options);
81
    }
82
83
    /**
84
     * Create an Account.
85
     * @link   https://stripe.com/docs/api/php#create_account
86
     *
87
     * @param  array|null         $params
88
     * @param  array|string|null  $options
89
     *
90
     * @return self
91
     */
92 30
    public static function create($params = null, $options = null)
93
    {
94 30
        return self::scopedCreate($params, $options);
95
    }
96
97
    /**
98
     * Save an Account.
99
     * @link   https://stripe.com/docs/api/php#update_account
100
     *
101
     * @param  array|string|null  $options
102
     *
103
     * @return self
104
     */
105 10
    public function save($options = null)
106
    {
107 10
        return $this->scopedSave($options);
108
    }
109
110
    /**
111
     * Get all Accounts.
112
     * @link   https://stripe.com/docs/api/php#list_accounts
113
     *
114
     * @param  array|null         $params
115
     * @param  array|string|null  $options
116
     *
117
     * @return \Arcanedev\Stripe\Collection|array
118
     */
119
    public static function all($params = null, $options = null)
120
    {
121
        return self::scopedAll($params, $options);
122
    }
123
124
    /**
125
     * Delete an Account.
126
     * @link   https://stripe.com/docs/api/php#delete_account
127
     *
128
     * @param  array|null         $params
129
     * @param  array|string|null  $options
130
     *
131
     * @return self
132
     */
133 5
    public function delete($params = null, $options = null)
134
    {
135 5
        return $this->scopedDelete($params, $options);
136
    }
137
138
    /**
139
     * Reject an Account.
140
     * @link   https://stripe.com/docs/api/php#reject_account
141
     *
142
     * @param  array|null         $params
143
     * @param  array|string|null  $options
144
     *
145
     * @return self
146
     */
147 5
    public function reject($params = null, $options = null)
148
    {
149 5
        return $this->scopedPostCall(
150 5
            $this->instanceUrl() . '/reject', $params, $options
151 4
        );
152
    }
153
}
154