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

UpdateFromTransactionNotification   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 16
c 1
b 0
f 1
dl 0
loc 47
rs 10
wmc 9

3 Methods

Rating   Name   Duplication   Size   Complexity  
A handleActive() 0 5 2
A handle() 0 16 5
A handleNotStarted() 0 5 2
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
}