StatusAction::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Locastic\SyliusHTPayWayPlugin\Action;
4
5
use Locastic\TcomPayWay\Model\Payment;
6
use Payum\Core\Action\ActionInterface;
7
use Payum\Core\ApiAwareTrait;
8
use Payum\Core\Request\GetStatusInterface;
9
use Payum\Core\Exception\RequestNotSupportedException;
10
use Payum\Core\ApiAwareInterface;
11
12
/**
13
 * @property Payment $api
14
 */
15
class StatusAction implements ActionInterface, ApiAwareInterface
16
{
17
    use ApiAwareTrait;
18
19
    public function __construct()
20
    {
21
        $this->apiClass = Payment::class;
22
    }
23
24
    /**
25
     * {@inheritDoc}
26
     *
27
     * @param GetStatusInterface $request
28
     */
29
    public function execute($request)
30
    {
31
        RequestNotSupportedException::assertSupports($this, $request);
32
33
        $model = $request->getModel();
34
35
        if (false === isset($model['tcompayway_response'])) {
36
            $request->markNew();
37
38
            return;
39
        }
40
41
        $statusCode = (int)$model['tcompayway_response']['pgw_result_code'];
42
43
        if (0 === $statusCode && 0 === (int)$this->api->getPgwAuthorizationType()) {
44
            $request->markCaptured();
45
46
            return;
47
        }
48
49
        if (0 === $statusCode && 1 === (int)$this->api->getPgwAuthorizationType()) {
50
            $request->markCaptured();
51
52
            return;
53
        }
54
55
        if ($statusCode === 3) {
56
            $request->markCanceled();
57
58
            return;
59
        }
60
61
        if ($statusCode > 0) {
62
            $request->markFailed();
63
64
            return;
65
        }
66
67
        $request->markUnknown();
68
    }
69
70
    /**
71
     * {@inheritDoc}
72
     */
73
    public function supports($request)
74
    {
75
        return
76
            $request instanceof GetStatusInterface &&
77
            $request->getModel() instanceof \ArrayAccess;
78
    }
79
}
80