-
-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathTransactionController.php
More file actions
52 lines (42 loc) · 1.68 KB
/
Copy pathTransactionController.php
File metadata and controls
52 lines (42 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
namespace App\Http\Controllers;
use App\Events\TransactionSavedEvent;
use App\Http\Resources\ApiResource;
use App\Jobs\ProcessPayment;
use App\Providers\Interfaces\ITransactionProvider;
use App\Services\TransactionService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
class TransactionController extends Controller {
public function __construct(
private TransactionService $transactionService,
) {}
public function index(): ApiResource {
$limit = \request()->get('per_page') ?? 15;
return ApiResource::make($this->transactionService->getAll($limit));
}
public function show(int $id): ApiResource {
$transaction = $this->transactionService->getById($id);
return ApiResource::make($transaction);
}
public function store(Request $request): ApiResource {
/**
* @var ITransactionProvider $transactionProvider
*/
$transactionProvider = $request->attributes->get('transactionProcessor');
$transactionProvider->saveTransaction();
$transaction = $transactionProvider->saveCommonData();
event(new TransactionSavedEvent($transactionProvider));
if (isset($transaction->id)) {
$companyId = $request->attributes->get('companyId') ?? null;
if ($companyId !== null) {
dispatch(new ProcessPayment($companyId, $transaction->id));
} else {
Log::warning('Company ID not found in request attributes. Payment transaction job not triggered for transaction '.$transaction->id);
}
}
return ApiResource::make([
'id' => $transaction->id ?? null,
]);
}
}