Passed
Push — master ( 19a915...d9efc8 )
by Gabriel
14:56
created

CreateNewForSubscription   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 22
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 10
c 1
b 0
f 1
dl 0
loc 22
rs 10
wmc 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A handle() 0 16 2
1
<?php
2
3
namespace ByTIC\Payments\Actions\Transactions;
4
5
use ByTIC\Payments\Actions\Purchases\DuplicatePurchase;
6
use ByTIC\Payments\Models\Subscriptions\Subscription;
7
use ByTIC\Payments\Models\Transactions\Transaction;
8
use ByTIC\Payments\Models\Transactions\TransactionTrait;
9
use ByTIC\Payments\Utility\PaymentsModels;
10
use Nip\Records\Record;
11
12
/**
13
 * Class CreateNewForSubscription
14
 * @package ByTIC\Payments\Actions\Transactions
15
 */
16
class CreateNewForSubscription
17
{
18
    /**
19
     * @param Subscription $subscription
20
     * @return Transaction|TransactionTrait
21
     */
22
    public static function handle($subscription): Record
23
    {
24
        $lastTransaction = $subscription->getLastTransaction();
25
        if (!is_object($lastTransaction)) {
26
27
        }
28
        $lastPurchase = $lastTransaction->getPurchase();
29
30
        $newPurchase = DuplicatePurchase::fromSibling($lastPurchase);
31
        $transaction = PaymentsModels::transactions()->findOrCreateForPurchase($newPurchase);
32
33
        $transaction->populateFromSubscription($subscription);
34
        $transaction->populateFromToken($subscription->getToken());
35
        $transaction->update();
36
37
        return $transaction;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $transaction returns the type ByTIC\Payments\Models\Tr...ctions\TransactionTrait which is incompatible with the type-hinted return Nip\Records\Record.
Loading history...
38
    }
39
}