UpdatePaymentStatusExtension::onPostExecute()   B
last analyzed

Complexity

Conditions 6
Paths 5

Size

Total Lines 22
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 14
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 1
Metric Value
dl 0
loc 22
ccs 14
cts 14
cp 1
rs 8.6737
c 1
b 0
f 1
cc 6
eloc 13
nc 5
nop 1
crap 6
1
<?php
2
3
namespace Recca0120\LaravelPayum\Extension;
4
5
use Payum\Core\Request\Generic;
6
use Payum\Core\Extension\Context;
7
use Payum\Core\Model\PaymentInterface;
8
use Payum\Core\Request\GetHumanStatus;
9
use Payum\Core\Request\GetStatusInterface;
10
use Illuminate\Contracts\Events\Dispatcher;
11
use Payum\Core\Extension\ExtensionInterface;
12
use Recca0120\LaravelPayum\Events\StatusChanged;
13
use Recca0120\LaravelPayum\Contracts\PaymentStatus;
14
15
class UpdatePaymentStatusExtension implements ExtensionInterface
16
{
17
    /**
18
     * $events.
19
     *
20
     * @var \Illuminate\Contracts\Events\Dispatcher
21
     */
22
    protected $events;
23
24
    /**
25
     * __construct.
26
     *
27
     * @param \Illuminate\Contracts\Events\Dispatcher $events
28
     */
29 4
    public function __construct(Dispatcher $events)
30
    {
31 4
        $this->events = $events;
32 4
    }
33
34
    /**
35
     * {@inheritdoc}
36
     */
37 1
    public function onPreExecute(Context $context)
38
    {
39 1
    }
40
41
    /**
42
     * {@inheritdoc}
43
     */
44 1
    public function onExecute(Context $context)
45
    {
46 1
    }
47
48
    /**
49
     * {@inheritdoc}
50
     */
51 4
    public function onPostExecute(Context $context)
52
    {
53 4
        if ($context->getPrevious()) {
54 1
            return;
55
        }
56
        /** @var Generic $request */
57 3
        $request = $context->getRequest();
58 3
        if (false === $request instanceof Generic || $request instanceof GetStatusInterface) {
59 2
            return;
60
        }
61
62 1
        $payment = $request->getFirstModel();
63 1
        if ($payment instanceof PaymentInterface) {
64
            /* @var Payment $payment */
65 1
            $status = new GetHumanStatus($payment);
66 1
            $context->getGateway()->execute($status);
67 1
            if ($payment instanceof PaymentStatus) {
68 1
                $payment->setStatus($status->getValue());
69
            }
70 1
            $this->events->fire(new StatusChanged($status, $payment));
71
        }
72 1
    }
73
}
74