Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 36 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,23 @@ ChartMogul\Customer::connectSubscriptions("cus_5915ee5a-babd-406b-b8ce-d207133fb
]);
```

OR
OR (Recommended)

```php
use ChartMogul\Metrics\Customers\Subscription;

// Fetch customer subscriptions
$subscriptions = $customer->subscriptions();

// Connect subscriptions
Subscription::connect(
"ds_ade45e52-47a4-231a-1ed2-eb6b9e541213", // data source UUID
"cus_5915ee5a-babd-406b-b8ce-d207133fb4cb", // customer UUID
$subscriptions->entries // array of Subscription objects
);
```

OR (Deprecated)

```php
$subscription1->connect("cus_5915ee5a-babd-406b-b8ce-d207133fb4cb", $subscriptions);
Expand All @@ -268,7 +284,23 @@ ChartMogul\Customer::disconnectSubscriptions("cus_5915ee5a-babd-406b-b8ce-d20713
]);
```

OR
OR (Recommended)

```php
use ChartMogul\Metrics\Customers\Subscription;

// Fetch customer subscriptions
$subscriptions = $customer->subscriptions();

// Disconnect subscriptions
Subscription::disconnect(
"ds_ade45e52-47a4-231a-1ed2-eb6b9e541213", // data source UUID
"cus_5915ee5a-babd-406b-b8ce-d207133fb4cb", // customer UUID
$subscriptions->entries // array of Subscription objects
);
```

OR (Deprecated)

```php
$subscription1->disconnect("cus_5915ee5a-babd-406b-b8ce-d207133fb4cb", $subscriptions);
Expand Down Expand Up @@ -912,6 +944,8 @@ The same can be done with Payment class.
$subscriptions = $cus->subscriptions();
```

**Note:** The following methods are deprecated. Use `ChartMogul\Metrics\Customers\Subscription::connect()` and `ChartMogul\Metrics\Customers\Subscription::disconnect()` instead. See the Connect/Disconnect Subscriptions section above for recommended usage.

**Cancel Customer Subscriptions**

```php
Expand Down
69 changes: 69 additions & 0 deletions src/Metrics/Customers/Subscription.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

/**
* @property-read string $id;
* @property-read string $uuid;
* @property-read string $plan;
* @property-read string $quantity;
* @property-read string $mrr;
Expand All @@ -22,6 +23,7 @@
class Subscription extends AbstractModel
{
protected $id;
protected $uuid;
protected $external_id;
protected $plan;
protected $quantity;
Expand All @@ -46,4 +48,71 @@ public static function all(array $options = [], ?ClientInterface $client = null)
{
return Subscriptions::all($options, $client);
}

/**
* Connect Subscriptions
*
* @param string $dataSourceUUID Data Source UUID
* @param string $customerUUID Customer UUID
* @param array|\ChartMogul\Resource\Collection|\Traversable $subscriptions Array or Collection of subscriptions to connect
* @param ClientInterface|null $client
* @return bool
*/
public static function connect($dataSourceUUID, $customerUUID, $subscriptions, ?ClientInterface $client = null)
{
$clientObj = $client ?? new \ChartMogul\Http\Client();

$arr = self::getSubscriptionsForConnectDisconnect($dataSourceUUID, $subscriptions);

$clientObj->send(
'/v1/customers/' . $customerUUID . '/connect_subscriptions',
'POST',
['subscriptions' => $arr]
);

return true;
}

/**
* Disconnect Subscriptions
*
* @param string $dataSourceUUID Data Source UUID
* @param string $customerUUID Customer UUID
* @param array|\ChartMogul\Resource\Collection|\Traversable $subscriptions Array or Collection of subscriptions to disconnect
* @param ClientInterface|null $client
* @return bool
*/
public static function disconnect($dataSourceUUID, $customerUUID, $subscriptions, ?ClientInterface $client = null)
{
$clientObj = $client ?? new \ChartMogul\Http\Client();

$arr = self::getSubscriptionsForConnectDisconnect($dataSourceUUID, $subscriptions);

$clientObj->send(
'/v1/customers/' . $customerUUID . '/disconnect_subscriptions',
'POST',
['subscriptions' => $arr]
);

return true;
}

/**
* Prepare subscriptions array for API request
*
* @param string $dataSourceUUID Data Source UUID
* @param array|\ChartMogul\Resource\Collection|\Traversable $subscriptions Subscriptions to prepare
* @return array
*/
private static function getSubscriptionsForConnectDisconnect($dataSourceUUID, $subscriptions)
{
$arr = [];
foreach ($subscriptions as $subscription) {
$arr[] = [
'data_source_uuid' => $dataSourceUUID,
'uuid' => $subscription->uuid
];
}
return $arr;
}
}
32 changes: 31 additions & 1 deletion src/Subscription.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@
class Subscription extends AbstractResource
{
use CreateTrait;
use AllTrait;
use AllTrait {
AllTrait::all as private traitAll;
}

/**
* @ignore
Expand All @@ -43,6 +45,22 @@ class Subscription extends AbstractResource
protected $data_source_uuid;
protected $customer_uuid;

/**
* Returns a list of objects
*
* @param array $data
* @param ClientInterface|null $client
* @return Collection|self[]|self
* @deprecated Use Customer->subscriptions() instead
*/
public static function all(array $data = [], ?ClientInterface $client = null)
{
@trigger_error(
'Subscription::all() is deprecated. Use Customer->subscriptions() instead.',
E_USER_DEPRECATED
);
return self::traitAll($data, $client);
}


private function cancellation($payload)
Expand Down Expand Up @@ -108,9 +126,15 @@ public static function fromArray(array $data, ?ClientInterface $client = null)
* @param string $customerUUID Customer UUID
* @param Subscription[] $subscriptions Array of Subscription to connect this subscription with
* @return bool
* @deprecated Use \ChartMogul\Metrics\Customers\Subscription::connect() instead
*/
public function connect($customerUUID, array $subscriptions)
{
@trigger_error(
'Subscription->connect() is deprecated. Use \ChartMogul\Metrics\Customers\Subscription::connect() instead.',
E_USER_DEPRECATED
);

$arr = [];
for ($i = 0; $i < count($subscriptions); $i++) {
$arr[$i] = $subscriptions[$i];
Expand Down Expand Up @@ -138,9 +162,15 @@ public function connect($customerUUID, array $subscriptions)
* @param string $customerUUID Customer UUID
* @param Subscription[] $subscriptions Array of Subscription to disconnect this subscription from
* @return bool
* @deprecated Use \ChartMogul\Metrics\Customers\Subscription::disconnect() instead
*/
public function disconnect($customerUUID, array $subscriptions)
{
@trigger_error(
'Subscription->disconnect() is deprecated. Use \ChartMogul\Metrics\Customers\Subscription::disconnect() instead.',
E_USER_DEPRECATED
);

$arr = [];
for ($i = 0; $i < count($subscriptions); $i++) {
$arr[$i] = $subscriptions[$i];
Expand Down
Loading