Passed
Push — master ( 43186b...d45fb7 )
by Gabriel
14:32
created

handleNotStarted()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 2
eloc 3
c 1
b 0
f 1
nc 2
nop 2
dl 0
loc 5
rs 10
1
<?php
2
3
namespace ByTIC\Payments\Actions\Subscriptions;
4
5
use ByTIC\Payments\Actions\Subscriptions\Charges\ChargedSuccessfully;
6
use ByTIC\Payments\Models\Subscriptions\Subscription;
7
use ByTIC\Payments\Models\Transactions\Statuses\Active;
8
use ByTIC\Payments\Models\Transactions\Transaction;
9
use ByTIC\Payments\Subscriptions\Statuses\{Active as SubscriptionActive, Canceled, Completed, NotStarted};
10
11
/**
12
 * Class UpdateFromTransactionToken
13
 * @package ByTIC\Payments\Actions\Subscriptions
14
 */
15
class UpdateFromTransactionNotification
16
{
17
    /**
18
     * @param Subscription $subscription
19
     * @param Transaction $transaction
20
     */
21
    public static function handle($subscription, $transaction)
22
    {
23
        $status = $subscription->getStatus();
24
25
        if ($status instanceof Canceled || $status instanceof Completed) {
26
            return;
27
        }
28
29
        if ($status instanceof NotStarted) {
30
            static::handleNotStarted($subscription, $transaction);
31
            return;
32
        }
33
34
        if ($status instanceof SubscriptionActive) {
35
            static::handleActive($subscription, $transaction);
36
            return;
37
        }
38
    }
39
40
    /**
41
     * @param Subscription $subscription
42
     * @param Transaction $transaction
43
     */
44
    protected static function handleNotStarted($subscription, $transaction)
45
    {
46
        if ($transaction->getStatus() instanceof Active) {
47
            StartSubscription::handle($subscription);
48
            return;
49
        }
50
        // @todo logic for when transaction errors
51
    }
52
53
    /**
54
     * @param Subscription $subscription
55
     * @param Transaction $transaction
56
     */
57
    protected static function handleActive($subscription, $transaction)
58
    {
59
        if ($transaction->getStatus() instanceof Active) {
60
            ChargedSuccessfully::handle($subscription);
61
            return;
62
        }
63
    }
64
}