Files

61 lines
1.6 KiB
PHP
Raw Permalink Normal View History

2025-01-23 22:47:16 -06:00
<?php
2025-01-28 17:33:54 -06:00
declare(strict_types=1);
2025-01-23 22:47:16 -06:00
namespace App\Http\ApiControllers;
2025-01-28 17:14:49 -06:00
use App\Http\ApiControllers\Controller as ApiController;
2025-01-26 22:56:05 -06:00
use App\Http\Requests\TransactionRequest;
2025-01-24 19:24:16 -06:00
use App\Http\Resources\TransactionResource;
2025-01-28 17:14:49 -06:00
use App\Models\Transaction;
use HackerEsq\FilterModels\FilterModels;
use Illuminate\Support\Facades\Gate;
2025-01-23 22:47:16 -06:00
class TransactionController extends ApiController
{
2025-01-24 19:24:16 -06:00
public function index(FilterModels $filters)
2025-01-23 22:47:16 -06:00
{
2025-01-24 19:24:16 -06:00
$filters->setQuery(Transaction::query());
$filters->setScopes(['myTransactions']);
$filters->setEagerRelations(['market_data']);
2025-01-24 19:24:16 -06:00
$filters->setSearchableColumns(['symbol']);
return TransactionResource::collection($filters->paginated());
2025-01-23 22:47:16 -06:00
}
2025-01-26 22:56:05 -06:00
public function store(TransactionRequest $request)
2025-01-28 17:14:49 -06:00
{
2025-01-27 20:04:03 -06:00
Gate::authorize('fullAccess', $request->portfolio);
2025-01-26 22:56:05 -06:00
$transaction = Transaction::create($request->validated());
2025-01-28 17:14:49 -06:00
2025-01-26 22:56:05 -06:00
return TransactionResource::make($transaction);
}
public function show(Transaction $transaction)
{
2025-01-27 20:04:03 -06:00
Gate::authorize('readOnly', $transaction->portfolio);
2025-01-26 22:56:05 -06:00
return TransactionResource::make($transaction);
}
public function update(TransactionRequest $request, Transaction $transaction)
{
2025-01-27 20:04:03 -06:00
Gate::authorize('fullAccess', $transaction->portfolio);
2025-01-26 22:56:05 -06:00
$transaction->update($request->validated());
return TransactionResource::make($transaction);
}
public function destroy(Transaction $transaction)
{
2025-01-27 20:04:03 -06:00
Gate::authorize('fullAccess', $transaction->portfolio);
2025-01-26 22:56:05 -06:00
$transaction->delete();
return response()->noContent();
}
2025-01-28 17:14:49 -06:00
}