Added asset model request :(

Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
snipe 2024-07-04 20:50:11 +01:00
parent ae9085b11f
commit cc6f1cd585
2 changed files with 70 additions and 52 deletions

View file

@ -4,19 +4,20 @@ namespace App\Http\Controllers;
use App\Helpers\Helper; use App\Helpers\Helper;
use App\Http\Requests\ImageUploadRequest; use App\Http\Requests\ImageUploadRequest;
use App\Http\Requests\StoreAssetModelRequest;
use App\Models\Actionlog; use App\Models\Actionlog;
use App\Models\Asset;
use App\Models\AssetModel; use App\Models\AssetModel;
use App\Models\CustomField; use App\Models\CustomField;
use App\Models\User; use App\Models\User;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Symfony\Component\HttpFoundation\JsonResponse;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use \Illuminate\Contracts\View\View;
use \Illuminate\Http\RedirectResponse;
/** /**
* This class controls all actions related to asset models for * This class controls all actions related to asset models for
@ -33,10 +34,8 @@ class AssetModelsController extends Controller
* *
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v1.0] * @since [v1.0]
* @return View
* @throws \Illuminate\Auth\Access\AuthorizationException
*/ */
public function index() public function index() : View
{ {
$this->authorize('index', AssetModel::class); $this->authorize('index', AssetModel::class);
@ -48,10 +47,8 @@ class AssetModelsController extends Controller
* *
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v1.0] * @since [v1.0]
* @return View
* @throws \Illuminate\Auth\Access\AuthorizationException
*/ */
public function create() public function create() : View
{ {
$this->authorize('create', AssetModel::class); $this->authorize('create', AssetModel::class);
@ -66,16 +63,12 @@ class AssetModelsController extends Controller
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v1.0] * @since [v1.0]
* @param ImageUploadRequest $request * @param ImageUploadRequest $request
* @return \Illuminate\Http\RedirectResponse
* @throws \Illuminate\Auth\Access\AuthorizationException
*/ */
public function store(ImageUploadRequest $request) public function store(ImageUploadRequest $request) : RedirectResponse
{ {
$this->authorize('create', AssetModel::class); $this->authorize('create', AssetModel::class);
// Create a new asset model
$model = new AssetModel; $model = new AssetModel;
// Save the model data
$model->eol = $request->input('eol'); $model->eol = $request->input('eol');
$model->depreciation_id = $request->input('depreciation_id'); $model->depreciation_id = $request->input('depreciation_id');
$model->name = $request->input('name'); $model->name = $request->input('name');
@ -93,7 +86,6 @@ class AssetModelsController extends Controller
$model = $request->handleImages($model); $model = $request->handleImages($model);
// Was it created?
if ($model->save()) { if ($model->save()) {
if ($this->shouldAddDefaultValues($request->input())) { if ($this->shouldAddDefaultValues($request->input())) {
if (!$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))){ if (!$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))){
@ -113,18 +105,14 @@ class AssetModelsController extends Controller
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v1.0] * @since [v1.0]
* @param int $modelId * @param int $modelId
* @return View
* @throws \Illuminate\Auth\Access\AuthorizationException
*/ */
public function edit($modelId = null) public function edit($modelId = null) : View | RedirectResponse
{ {
$this->authorize('update', AssetModel::class); $this->authorize('update', AssetModel::class);
if ($item = AssetModel::find($modelId)) { if ($item = AssetModel::find($modelId)) {
$category_type = 'asset'; $category_type = 'asset';
$view = View::make('models/edit', compact('item', 'category_type')); return view('models/edit', compact('item', 'category_type'))->with('depreciation_list', Helper::depreciationList());
$view->with('depreciation_list', Helper::depreciationList());
return $view;
} }
return redirect()->route('models.index')->with('error', trans('admin/models/message.does_not_exist')); return redirect()->route('models.index')->with('error', trans('admin/models/message.does_not_exist'));
@ -142,12 +130,11 @@ class AssetModelsController extends Controller
* @return \Illuminate\Http\RedirectResponse * @return \Illuminate\Http\RedirectResponse
* @throws \Illuminate\Auth\Access\AuthorizationException * @throws \Illuminate\Auth\Access\AuthorizationException
*/ */
public function update(ImageUploadRequest $request, $modelId = null) public function update(StoreAssetModelRequest $request, $modelId = null) : RedirectResponse
{ {
$this->authorize('update', AssetModel::class); $this->authorize('update', AssetModel::class);
// Check if the model exists
if (is_null($model = AssetModel::find($modelId))) { if (is_null($model = AssetModel::find($modelId))) {
// Redirect to the models management page
return redirect()->route('models.index')->with('error', trans('admin/models/message.does_not_exist')); return redirect()->route('models.index')->with('error', trans('admin/models/message.does_not_exist'));
} }
@ -173,9 +160,6 @@ class AssetModelsController extends Controller
} }
} }
if ($model->save()) { if ($model->save()) {
if ($model->wasChanged('eol')) { if ($model->wasChanged('eol')) {
if ($model->eol > 0) { if ($model->eol > 0) {
@ -200,10 +184,8 @@ class AssetModelsController extends Controller
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v1.0] * @since [v1.0]
* @param int $modelId * @param int $modelId
* @return \Illuminate\Http\RedirectResponse
* @throws \Illuminate\Auth\Access\AuthorizationException
*/ */
public function destroy($modelId) public function destroy($modelId) : RedirectResponse
{ {
$this->authorize('delete', AssetModel::class); $this->authorize('delete', AssetModel::class);
// Check if the model exists // Check if the model exists
@ -237,10 +219,8 @@ class AssetModelsController extends Controller
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v1.0] * @since [v1.0]
* @param int $id * @param int $id
* @return \Illuminate\Http\RedirectResponse
* @throws \Illuminate\Auth\Access\AuthorizationException
*/ */
public function getRestore($id) public function getRestore($id) : RedirectResponse
{ {
$this->authorize('create', AssetModel::class); $this->authorize('create', AssetModel::class);
@ -255,7 +235,7 @@ class AssetModelsController extends Controller
$logaction->item_type = User::class; $logaction->item_type = User::class;
$logaction->item_id = $model->id; $logaction->item_id = $model->id;
$logaction->created_at = date('Y-m-d H:i:s'); $logaction->created_at = date('Y-m-d H:i:s');
$logaction->user_id = Auth::user()->id; $logaction->user_id = auth()->id();
$logaction->logaction('restore'); $logaction->logaction('restore');
@ -282,10 +262,8 @@ class AssetModelsController extends Controller
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v1.0] * @since [v1.0]
* @param int $modelId * @param int $modelId
* @return View
* @throws \Illuminate\Auth\Access\AuthorizationException
*/ */
public function show($modelId = null) public function show($modelId = null) : View | RedirectResponse
{ {
$this->authorize('view', AssetModel::class); $this->authorize('view', AssetModel::class);
$model = AssetModel::withTrashed()->find($modelId); $model = AssetModel::withTrashed()->find($modelId);
@ -303,9 +281,8 @@ class AssetModelsController extends Controller
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v1.0] * @since [v1.0]
* @param int $modelId * @param int $modelId
* @return View
*/ */
public function getClone($modelId = null) public function getClone($modelId = null) : View | RedirectResponse
{ {
$this->authorize('create', AssetModel::class); $this->authorize('create', AssetModel::class);
// Check if the model exists // Check if the model exists
@ -331,9 +308,8 @@ class AssetModelsController extends Controller
* @author [B. Wetherington] [<uberbrady@gmail.com>] * @author [B. Wetherington] [<uberbrady@gmail.com>]
* @since [v2.0] * @since [v2.0]
* @param int $modelId * @param int $modelId
* @return View
*/ */
public function getCustomFields($modelId) public function getCustomFields($modelId) : View
{ {
return view('models.custom_fields_form')->with('model', AssetModel::find($modelId)); return view('models.custom_fields_form')->with('model', AssetModel::find($modelId));
} }
@ -345,9 +321,8 @@ class AssetModelsController extends Controller
* *
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v1.7] * @since [v1.7]
* @return \Illuminate\Contracts\View\View
*/ */
public function postBulkEdit(Request $request) public function postBulkEdit(Request $request) : View | RedirectResponse
{ {
$models_raw_array = $request->input('ids'); $models_raw_array = $request->input('ids');
@ -389,9 +364,8 @@ class AssetModelsController extends Controller
* *
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v1.7] * @since [v1.7]
* @return \Illuminate\Contracts\View\View
*/ */
public function postBulkEditSave(Request $request) public function postBulkEditSave(Request $request) : RedirectResponse
{ {
$models_raw_array = $request->input('ids'); $models_raw_array = $request->input('ids');
$update_array = []; $update_array = [];
@ -429,9 +403,8 @@ class AssetModelsController extends Controller
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v1.0] * @since [v1.0]
* @param int $modelId * @param int $modelId
* @return \Illuminate\Http\RedirectResponse
*/ */
public function postBulkDelete(Request $request) public function postBulkDelete(Request $request) : RedirectResponse
{ {
$models_raw_array = $request->input('ids'); $models_raw_array = $request->input('ids');
@ -470,9 +443,8 @@ class AssetModelsController extends Controller
* any default values were entered into the form. * any default values were entered into the form.
* *
* @param array $input * @param array $input
* @return bool
*/ */
private function shouldAddDefaultValues(array $input) private function shouldAddDefaultValues(array $input) : bool
{ {
return ! empty($input['add_default_values']) return ! empty($input['add_default_values'])
&& ! empty($input['default_values']) && ! empty($input['default_values'])
@ -484,7 +456,6 @@ class AssetModelsController extends Controller
* *
* @param AssetModel $model * @param AssetModel $model
* @param array $defaultValues * @param array $defaultValues
* @return void
*/ */
private function assignCustomFieldsDefaultValues(AssetModel $model, array $defaultValues): bool private function assignCustomFieldsDefaultValues(AssetModel $model, array $defaultValues): bool
{ {
@ -527,9 +498,8 @@ class AssetModelsController extends Controller
/** /**
* Removes all default values * Removes all default values
* *
* @return void
*/ */
private function removeCustomFieldsDefaultValues(AssetModel $model) private function removeCustomFieldsDefaultValues(AssetModel $model) : void
{ {
$model->defaultValues()->detach(); $model->defaultValues()->detach();
} }

View file

@ -0,0 +1,48 @@
<?php
namespace App\Http\Requests;
use App\Models\Category;
use Illuminate\Validation\Rule;
class StoreAssetModelRequest extends ImageUploadRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
public function prepareForValidation(): void
{
$this->category_type = Category::select('category_type')->find($this->category_id);
\Log::error('Category Type: '.$this->category_type);
$this->merge([
'model_category_type' => $this->category_type,
]);
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return array_merge(
['model_category_type' => 'required|in:asset'],
parent::rules(),
);
}
public function messages(): array
{
$messages = ['model_category_type.in' => 'The category must be an asset category, dummy.'];
return $messages;
}
}