wip
This commit is contained in:
@@ -8,8 +8,7 @@ use App\Models\Portfolio;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use HackerEsq\FilterModels\FilterModels;
|
||||
use App\Http\Resources\PortfolioResource;
|
||||
use App\Http\Requests\StorePortfolioRequest;
|
||||
use App\Http\Requests\UpdatePortfolioRequest;
|
||||
use App\Http\Requests\PortfolioRequest;
|
||||
use App\Http\ApiControllers\Controller as ApiController;
|
||||
|
||||
class PortfolioController extends ApiController
|
||||
@@ -25,7 +24,7 @@ class PortfolioController extends ApiController
|
||||
return PortfolioResource::collection($filters->paginated());
|
||||
}
|
||||
|
||||
public function store(StorePortfolioRequest $request)
|
||||
public function store(PortfolioRequest $request)
|
||||
{
|
||||
$portfolio = Portfolio::create($request->validated());
|
||||
|
||||
@@ -39,7 +38,7 @@ class PortfolioController extends ApiController
|
||||
return PortfolioResource::make($portfolio);
|
||||
}
|
||||
|
||||
public function update(UpdatePortfolioRequest $request, Portfolio $portfolio)
|
||||
public function update(PortfolioRequest $request, Portfolio $portfolio)
|
||||
{
|
||||
Gate::authorize('fullAccess', $portfolio);
|
||||
|
||||
@@ -52,6 +51,8 @@ class PortfolioController extends ApiController
|
||||
{
|
||||
Gate::authorize('fullAccess', $portfolio);
|
||||
|
||||
$portfolio->delete();
|
||||
|
||||
return response()->noContent();
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,9 @@ namespace App\Http\ApiControllers;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use HackerEsq\FilterModels\FilterModels;
|
||||
use App\Http\Requests\TransactionRequest;
|
||||
use App\Http\Resources\TransactionResource;
|
||||
use App\Http\ApiControllers\Controller as ApiController;
|
||||
|
||||
@@ -19,4 +21,36 @@ class TransactionController extends ApiController
|
||||
|
||||
return TransactionResource::collection($filters->paginated());
|
||||
}
|
||||
|
||||
public function store(TransactionRequest $request)
|
||||
{
|
||||
$transaction = Transaction::create($request->validated());
|
||||
|
||||
return TransactionResource::make($transaction);
|
||||
}
|
||||
|
||||
public function show(Transaction $transaction)
|
||||
{
|
||||
Gate::authorize('readOnly', $transaction);
|
||||
|
||||
return TransactionResource::make($transaction);
|
||||
}
|
||||
|
||||
public function update(TransactionRequest $request, Transaction $transaction)
|
||||
{
|
||||
Gate::authorize('fullAccess', $transaction);
|
||||
|
||||
$transaction->update($request->validated());
|
||||
|
||||
return TransactionResource::make($transaction);
|
||||
}
|
||||
|
||||
public function destroy(Transaction $transaction)
|
||||
{
|
||||
Gate::authorize('fullAccess', $transaction);
|
||||
|
||||
$transaction->delete();
|
||||
|
||||
return response()->noContent();
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
|
||||
use App\Models\Holding;
|
||||
use App\Models\Portfolio;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
|
||||
class PortfolioController extends Controller
|
||||
{
|
||||
@@ -22,9 +23,7 @@ class PortfolioController extends Controller
|
||||
*/
|
||||
public function show(Request $request, Portfolio $portfolio)
|
||||
{
|
||||
if ($request->user()->cannot('readOnly', $portfolio)) {
|
||||
abort(403);
|
||||
}
|
||||
Gate::authorize('readOnly', $portfolio);
|
||||
|
||||
$portfolio->load(['transactions', 'holdings']);
|
||||
|
||||
|
||||
+10
-3
@@ -4,7 +4,7 @@ namespace App\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class StorePortfolioRequest extends FormRequest
|
||||
class PortfolioRequest extends FormRequest
|
||||
{
|
||||
|
||||
/**
|
||||
@@ -14,10 +14,17 @@ class StorePortfolioRequest extends FormRequest
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'title' => ['required', 'string', 'max:255'],
|
||||
|
||||
$rules = [
|
||||
'title' => ['required', 'string', 'min:5', 'max:255'],
|
||||
'notes' => ['sometimes', 'nullable', 'string'],
|
||||
'wishlist' => ['sometimes', 'nullable', 'boolean'],
|
||||
];
|
||||
|
||||
if (!is_null($this->portfolio)) {
|
||||
$rules['title'][0] = 'sometimes';
|
||||
}
|
||||
|
||||
return $rules;
|
||||
}
|
||||
}
|
||||
+10
-3
@@ -4,7 +4,7 @@ namespace App\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class UpdatePortfolioRequest extends FormRequest
|
||||
class TransactionRequest extends FormRequest
|
||||
{
|
||||
|
||||
/**
|
||||
@@ -14,10 +14,17 @@ class UpdatePortfolioRequest extends FormRequest
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'title' => ['sometimes', 'string', 'max:255'],
|
||||
|
||||
$rules = [
|
||||
'title' => ['required', 'string', 'min:5', 'max:255'],
|
||||
'notes' => ['sometimes', 'nullable', 'string'],
|
||||
'wishlist' => ['sometimes', 'nullable', 'boolean'],
|
||||
];
|
||||
|
||||
if (!is_null($this->portfolio)) {
|
||||
$rules['title'][0] = 'sometimes';
|
||||
}
|
||||
|
||||
return $rules;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user