StatusController   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 4
dl 0
loc 39
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 11 1
A handler() 0 12 1
A checkValidation() 0 11 2
1
<?php
2
3
namespace Tzsk\Payu\Controllers;
4
5
use Illuminate\Http\Request;
6
use Tzsk\Payu\Actions\Actionable;
7
use Tzsk\Payu\Actions\FailedResponse;
8
use Tzsk\Payu\Actions\SuccessResponse;
9
use Tzsk\Payu\Models\PayuTransaction;
10
11
class StatusController
12
{
13
    public function __invoke(Request $request)
14
    {
15
        $this->checkValidation($request);
16
17
        /** @var PayuTransaction $payment */
18
        $transaction = PayuTransaction::query()->locate($request->input('transaction'));
19
20
        $this->handler($request)->handle($transaction);
21
22
        return redirect()->to($transaction->destination);
23
    }
24
25
    protected function handler(Request $request): Actionable
26
    {
27
        $actions = [
28
            PayuTransaction::STATUS_SUCCESSFUL => new SuccessResponse($request),
29
            PayuTransaction::STATUS_FAILED => new FailedResponse($request),
30
        ];
31
32
        $callable = data_get($actions, $request->input('urlType'));
33
        abort_unless($callable, 403);
34
35
        return $callable;
36
    }
37
38
    protected function checkValidation(Request $request)
39
    {
40
        if (! $request->hasValidSignature()) {
41
            abort(403);
42
        }
43
44
        $request->validate([
0 ignored issues
show
Bug introduced by
The call to validate() misses a required argument $...$params.

This check looks for function calls that miss required arguments.

Loading history...
45
            'transaction' => 'required|string',
46
            'hash' => 'required|string',
47
        ]);
48
    }
49
}
50