StatusAction::execute()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 18
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 4
eloc 12
nc 4
nop 1
dl 0
loc 18
rs 9.8666
c 1
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Eres\SyliusIyzicoPlugin\Action;
6
7
use Eres\SyliusIyzicoPlugin\Bridge\IyzicoBridgeInterface;
8
use Payum\Core\Action\ActionInterface;
9
use Payum\Core\Bridge\Spl\ArrayObject;
10
use Payum\Core\Exception\RequestNotSupportedException;
11
use Payum\Core\GatewayAwareInterface;
12
use Payum\Core\GatewayAwareTrait;
13
use Payum\Core\Request\GetStatusInterface;
14
15
final class StatusAction implements ActionInterface, GatewayAwareInterface
16
{
17
    use GatewayAwareTrait;
18
19
    public function execute($request): void
20
    {
21
        RequestNotSupportedException::assertSupports($this, $request);
22
        $details = ArrayObject::ensureArrayObject($request->getModel());
23
24
        if (isset($details['iyzico_status'])) {
25
            if (IyzicoBridgeInterface::COMPLETED_STATUS === $details['iyzico_status']) {
26
                $request->markCaptured();
27
                return;
28
            }
29
30
            if (IyzicoBridgeInterface::FAILED_STATUS === $details['iyzico_status']) {
31
                $request->markFailed();
32
                return;
33
            }
34
        } else {
35
            $request->markNew();
36
            return;
37
        }
38
39
40
    }
41
42
    /**
43
     * @param mixed $request
44
     *
45
     * @return boolean
46
     */
47
    public function supports($request): bool
48
    {
49
        return
50
            $request instanceof GetStatusInterface &&
51
            $request->getModel() instanceof \ArrayAccess;
52
    }
53
}
54