diff --git a/app/Http/Controllers/AssetsController.php b/app/Http/Controllers/AssetsController.php index 571ae184b8..a0a4d53b23 100755 --- a/app/Http/Controllers/AssetsController.php +++ b/app/Http/Controllers/AssetsController.php @@ -1584,4 +1584,68 @@ class AssetsController extends Controller return $data; } + + public function getBulkCheckout() + { + // Get the dropdown of users and then pass it to the checkout view + $users_list = Helper::usersList(); + // Filter out assets that are not deployable. + $assets = Asset::RTD()->get(); + + $assets_list = Company::scopeCompanyables($assets, 'assets.company_id')->lists('detailed_name', 'id')->toArray(); + + return View::make('hardware/bulk-checkout')->with('users_list', $users_list)->with('assets_list', $assets_list); + } + + public function postBulkCheckout(Request $request) + { + + $this->validate($request, [ + "assigned_to" => 'required' + ]); + + $user = User::find(e(Input::get('assigned_to'))); + $admin = Auth::user(); + + $asset_ids = array_filter(Input::get('selected_assets')); + + if ((Input::has('checkout_at')) && (Input::get('checkout_at')!= date("Y-m-d"))) { + $checkout_at = e(Input::get('checkout_at')); + } else { + $checkout_at = date("Y-m-d H:i:s"); + } + + if (Input::has('expected_checkin')) { + $expected_checkin = e(Input::get('expected_checkin')); + } else { + $expected_checkin = ''; + } + + $has_errors = false; + $errors = []; + DB::transaction(function() use ($user, $admin, $checkout_at, $expected_checkin, $errors, $asset_ids) + { + foreach($asset_ids as $asset_id) + { + $asset = Asset::find($asset_id); + + $error = $asset->checkOutToUser($user, $admin, $checkout_at, $expected_checkin, e(Input::get('note')), null); + + if($error) + { + $has_errors = true; + array_merge_recursive($errors, $asset->getErrors()->toArray()); + } + } + }); + + if (!$errors) { + // Redirect to the new asset page + return redirect()->to("hardware")->with('success', trans('admin/hardware/message.checkout.success')); + } + + // Redirect to the asset management page with error + return redirect()->to("hardware/bulk-checkout")->with('error', trans('admin/hardware/message.checkout.error'))->withErrors($errors); + } + } diff --git a/app/Http/routes.php b/app/Http/routes.php index 6679ec8287..331a110fb6 100755 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -275,6 +275,13 @@ Route::group( ] ); + # Bulk checkout / checkin + Route::get( + 'bulkcheckout', + [ 'as' => 'hardware/bulkcheckout', 'uses' => 'AssetsController@getBulkCheckout' ] + ); + Route::post('bulkcheckout', 'AssetsController@postBulkCheckout'); + # Asset Model Management Route::group([ 'prefix' => 'models', 'middleware' => 'auth' ], function () { diff --git a/config/version.php b/config/version.php index de979d7c49..bf5ec28de5 100644 --- a/config/version.php +++ b/config/version.php @@ -1,5 +1,5 @@ 'v3.0', - 'hash_version' => 'v3.0-67-gf31637a', + 'hash_version' => 'v3.0-79-gfcb1d6a', ); \ No newline at end of file diff --git a/resources/lang/en/admin/hardware/general.php b/resources/lang/en/admin/hardware/general.php index 2a09db28e4..65b6d77477 100644 --- a/resources/lang/en/admin/hardware/general.php +++ b/resources/lang/en/admin/hardware/general.php @@ -3,6 +3,7 @@ return array( 'archived' => 'Archived', 'asset' => 'Asset', + 'bulk_checkout' => 'Checkout Assets to User', 'checkin' => 'Checkin Asset', 'checkout' => 'Checkout Asset to User', 'clone' => 'Clone Asset', diff --git a/resources/lang/en/general.php b/resources/lang/en/general.php index 72d77c0e3f..e1d5eba5c3 100644 --- a/resources/lang/en/general.php +++ b/resources/lang/en/general.php @@ -23,6 +23,7 @@ 'avatar_upload' => 'Upload Avatar', 'back' => 'Back', 'bad_data' => 'Nothing found. Maybe bad data?', + 'bulk_checkout' => 'Bulk Checkout', 'cancel' => 'Cancel', 'categories' => 'Categories', 'category' => 'Category', @@ -105,6 +106,7 @@ 'moreinfo' => 'More Info', 'name' => 'Name', 'next' => 'Next', + 'new' => 'new!', 'no_depreciation' => 'No Depreciation', 'no_results' => 'No Results.', 'no' => 'No', diff --git a/resources/views/hardware/bulk-checkout.blade.php b/resources/views/hardware/bulk-checkout.blade.php new file mode 100644 index 0000000000..08823f1bc3 --- /dev/null +++ b/resources/views/hardware/bulk-checkout.blade.php @@ -0,0 +1,280 @@ +@extends('layouts/default') + +{{-- Page title --}} +@section('title') + {{ trans('admin/hardware/general.bulk_checkout') }} +@parent +@stop + + +{{-- Page content --}} +@section('content') + + + + +