some good progress, lots of testing needs to be done on the new inclusion of SubstituteBindings

This commit is contained in:
spencerrlongg 2024-03-08 18:24:41 -06:00
parent eac01868ca
commit b239b3a4db
4 changed files with 61 additions and 78 deletions

View file

@ -618,15 +618,14 @@ class AssetsController extends Controller
* Accepts a POST request to update an asset * Accepts a POST request to update an asset
* *
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @param \App\Http\Requests\ImageUploadRequest $request
* @since [v4.0] * @since [v4.0]
* @return \Illuminate\Http\JsonResponse * @return \Illuminate\Http\JsonResponse
*/ */
public function update(UpdateAssetRequest $request, Asset $asset) public function update(UpdateAssetRequest $request, Asset $asset)
{ {
$asset->update($request->validated()); $asset->fill($request->validated());
// TODO: how much of this should go to validator? // TODO: how much of this can go in the validator?
($request->filled('model_id')) ? ($request->filled('model_id')) ?
$asset->model()->associate(AssetModel::find($request->get('model_id'))) : null; $asset->model()->associate(AssetModel::find($request->get('model_id'))) : null;
($request->filled('rtd_location_id')) ? ($request->filled('rtd_location_id')) ?

View file

@ -48,6 +48,7 @@ class Kernel extends HttpKernel
'api' => [ 'api' => [
'auth:api', 'auth:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
], ],
]; ];

View file

@ -19,27 +19,12 @@ class UpdateAssetRequest extends ImageUploadRequest
public function prepareForValidation() public function prepareForValidation()
{ {
dump($this->asset);
$asset = $this->route('asset');
dump($asset);
dump($this->route()->getName());
// the following are 'required' attributes that may or may not be present on an patch request // the following are 'required' attributes that may or may not be present on an patch request
// so supplying them here instead of doing funky array modification to the rules // so supplying them here instead of doing funky array modification to the rules
if (!$this->has('asset_tag')) { return $this->merge([
// TODO: not sure if i'll be able to use the route model binding here because of not-found return stuff, need to test 'asset_tag' => $this->asset_tag ?? $this->asset->asset_tag,
$asset_tag = $this->asset->asset_tag; 'model_id' => $this->model_id ?? $this->asset->model_id,
} 'status_id' => $this->status_id ?? $this->asset->status_id,
if (!$this->has('model_id')) {
$model_id = $this->asset->model_id;
}
if (!$this->has('status_id')) {
$status_id = $this->asset->status_id;
}
$this->merge([
'asset_tag' => $asset_tag,
'model_id' => $model_id,
'status_id' => $status_id,
]); ]);
} }
@ -53,6 +38,7 @@ class UpdateAssetRequest extends ImageUploadRequest
$rules = array_merge( $rules = array_merge(
(new Asset())->getRules(), (new Asset())->getRules(),
parent::rules(), parent::rules(),
//['model_id' => 'required|integer|exists:models,id,deleted_at,NULL|not_array']
); );
return $rules; return $rules;

View file

@ -1,7 +1,6 @@
<?php <?php
use App\Http\Controllers\Api; use App\Http\Controllers\Api;
// use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
@ -533,20 +532,18 @@ Route::group(['prefix' => 'v1', 'middleware' => ['api', 'throttle:api']], functi
}); });
// pulling this out of resource route group to begin normalizing
Route::patch('/hardware/{asset}', [Api\AssetsController::class, 'update'])->name('api.assets.update');
Route::resource('hardware', Route::resource('hardware',
Api\AssetsController::class, Api\AssetsController::class,
['names' => [ ['names' => [
'index' => 'api.assets.index', 'index' => 'api.assets.index',
'show' => 'api.assets.show', 'show' => 'api.assets.show',
'update' => 'api.assets.update',
'store' => 'api.assets.store', 'store' => 'api.assets.store',
'destroy' => 'api.assets.destroy', 'destroy' => 'api.assets.destroy',
], ],
'except' => ['create', 'edit'], 'except' => ['create', 'edit', 'update'],
'parameters' => ['asset' => 'asset_id'], 'parameters' => ['asset' => 'asset_id'],
] ]
); // end assets API routes ); // end assets API routes