From 13b51bc934d046248c9b4f49419c1d53a66031e9 Mon Sep 17 00:00:00 2001 From: Daniel Meltzer Date: Thu, 29 Dec 2016 11:10:52 -0500 Subject: [PATCH] Allow checkout of item to things on create page. Need to test validation better and maybe extract code to one place for checkout.blade and edit.blade --- app/Http/Controllers/AssetsController.php | 46 +- app/Http/Requests/AssetRequest.php | 28 +- resources/views/hardware/edit.blade.php | 557 ++++++++++++---------- 3 files changed, 334 insertions(+), 297 deletions(-) diff --git a/app/Http/Controllers/AssetsController.php b/app/Http/Controllers/AssetsController.php index e5263babf..f791dae2e 100755 --- a/app/Http/Controllers/AssetsController.php +++ b/app/Http/Controllers/AssetsController.php @@ -104,23 +104,26 @@ class AssetsController extends Controller * * @author [A. Gianotto] [] * @since [v1.0] - * @param integer $model_id + * @param Request $request * @return View + * @internal param int $model_id */ public function create(Request $request) { $this->authorize('create', Asset::class); - $view = View::make('hardware/edit'); - $view->with('supplier_list', Helper::suppliersList()); - $view->with('company_list', Helper::companyList()); - $view->with('model_list', Helper::modelList()); - $view->with('statuslabel_list', Helper::statusLabelList()); - $view->with('assigned_to', Helper::usersList()); - $view->with('location_list', Helper::locationsList()); - $view->with('item', new Asset); - $view->with('manufacturer', Helper::manufacturerList()); - $view->with('category', Helper::categoryList('asset')); - $view->with('statuslabel_types', Helper::statusTypeList()); + $view = View::make('hardware/edit') + ->with('supplier_list', Helper::suppliersList()) + ->with('company_list', Helper::companyList()) + ->with('model_list', Helper::modelList()) + ->with('statuslabel_list', Helper::statusLabelList()) + ->with('location_list', Helper::locationsList()) + ->with('item', new Asset) + ->with('manufacturer', Helper::manufacturerList()) + ->with('category', Helper::categoryList('asset')) + ->with('statuslabel_types', Helper::statusTypeList()) + ->with('users_list', Helper::usersList()) + ->with('assets_list', Helper::assetsList()) + ->with('locations_list', Helper::locationsList()); if ($request->has('model_id')) { $selected_model = AssetModel::find($request->input('model_id')); @@ -217,9 +220,15 @@ class AssetsController extends Controller // Was the asset created? if ($asset->save()) { $asset->logCreate(); - if (Input::get('assigned_to')!='') { - $user = User::find(e(Input::get('assigned_to'))); - $asset->checkOutToUser($user, Auth::user(), date('Y-m-d H:i:s'), '', 'Checked out on asset creation', e(Input::get('name'))); + if(request('assigned_user')) { + $target = User::find(request('assigned_user')); + } elseif(request('assigned_asset')) { + $target = Asset::find(request('assigned_asset')); + } elseif(request('assigned_location')) { + $target = Location::find(request('assigned_location')); + } + if ($target) { + $asset->checkOut($target, Auth::user(), date('Y-m-d H:i:s'), '', 'Checked out on asset creation', e(Input::get('name'))); } // Redirect to the asset listing page \Session::flash('success', trans('admin/hardware/message.create.success')); @@ -1317,8 +1326,9 @@ class AssetsController extends Controller public function getDatatable(Request $request, $status = null) { $this->authorize('index', Asset::class); - $assets = Company::scopeCompanyables(Asset::select('assets.*'))->with('model', 'assignedTo', 'assetLoc', 'assetstatus', 'defaultLoc', 'assetlog', 'model', 'model.category', 'model.manufacturer', 'model.fieldset', 'assetstatus', 'company') - ->Hardware(); + $assets = Company::scopeCompanyables(Asset::select('assets.*'))->with( + 'assetLoc', 'assetstatus', 'defaultLoc', 'assetlog', 'company', + 'model.category', 'model.manufacturer', 'model.fieldset'); if ($request->has('search')) { $assets = $assets->TextSearch(e($request->get('search'))); @@ -1424,9 +1434,7 @@ class AssetsController extends Controller $rows = array(); foreach ($assets as $asset) { - $row = $asset->present()->forDataTable($all_custom_fields); - if (($request->has('report')) && ($request->get('report')=='true')) { $rows[]= Helper::stripTagsFromJSON($row); } else { diff --git a/app/Http/Requests/AssetRequest.php b/app/Http/Requests/AssetRequest.php index 1ebe03e7a..6a7be8bf7 100644 --- a/app/Http/Requests/AssetRequest.php +++ b/app/Http/Requests/AssetRequest.php @@ -26,19 +26,21 @@ class AssetRequest extends Request public function rules() { $rules = [ - 'name' => 'min:2|max:255', - 'model_id' => 'required|integer', - 'status_id' => 'required|integer', - 'company_id' => 'integer|nullable', - 'warranty_months' => 'numeric|nullable', - 'physical' => 'integer|nullable', - 'checkout_date' => 'date', - 'checkin_date' => 'date', - 'supplier_id' => 'integer|nullable', - 'status' => 'integer|nullable', - 'asset_tag' => 'required', - 'purchase_cost' => 'numeric|nullable', - + 'name' => 'min:2|max:255', + 'model_id' => 'required|integer', + 'status_id' => 'required|integer', + 'company_id' => 'integer|nullable', + 'warranty_months' => 'numeric|nullable', + 'physical' => 'integer|nullable', + 'checkout_date' => 'date', + 'checkin_date' => 'date', + 'supplier_id' => 'integer|nullable', + 'status' => 'integer|nullable', + 'asset_tag' => 'required', + 'purchase_cost' => 'numeric|nullable', + "assigned_user" => 'required_without_all:assigned_asset,assigned_location', + "assigned_asset" => 'required_without_all:assigned_user,assigned_location', + "assigned_location" => 'required_without_all:assigned_user,assigned_asset', ]; $model = AssetModel::find($this->request->get('model_id')); diff --git a/resources/views/hardware/edit.blade.php b/resources/views/hardware/edit.blade.php index 9a1227033..3fc4eb15f 100755 --- a/resources/views/hardware/edit.blade.php +++ b/resources/views/hardware/edit.blade.php @@ -64,17 +64,41 @@ @if (!$item->id) -