] * @since [v1.0] * @param int $seatId * @param string $backTo * @return \Illuminate\Contracts\View\View * @throws \Illuminate\Auth\Access\AuthorizationException */ public function create($seatId = null, $backTo = null) { // Check if the asset exists if (is_null($licenseSeat = LicenseSeat::find($seatId)) || is_null($license = License::find($licenseSeat->license_id))) { // Redirect to the asset management page with error return redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.not_found')); } $this->authorize('checkout', $license); return view('licenses/checkin', compact('licenseSeat'))->with('backto', $backTo); } /** * Validates and stores the license checkin action. * * @author [A. Gianotto] [] * @see LicenseCheckinController::create() method that provides the form view * @since [v1.0] * @param int $seatId * @param string $backTo * @return \Illuminate\Http\RedirectResponse * @throws \Illuminate\Auth\Access\AuthorizationException */ public function store(Request $request, $seatId = null, $backTo = null) { // Check if the asset exists if (is_null($licenseSeat = LicenseSeat::find($seatId))) { // Redirect to the asset management page with error return redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.not_found')); } $license = License::find($licenseSeat->license_id); // LicenseSeat is not assigned, it can't be checked in if (is_null($licenseSeat->assigned_to) && is_null($licenseSeat->asset_id)) { return redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.checkin.error')); } $this->authorize('checkout', $license); if (! $license->reassignable) { // Not allowed to checkin Session::flash('error', 'License not reassignable.'); return redirect()->back()->withInput(); } // Declare the rules for the form validation $rules = [ 'notes' => 'string|nullable', ]; // Create a new validator instance from our validation rules $validator = Validator::make($request->all(), $rules); // If validation fails, we'll exit the operation now. if ($validator->fails()) { // Ooops.. something went wrong return redirect()->back()->withInput()->withErrors($validator); } if($licenseSeat->assigned_to != null){ $return_to = User::find($licenseSeat->assigned_to); } else { $return_to = Asset::find($licenseSeat->asset_id); } // Update the asset data $licenseSeat->assigned_to = null; $licenseSeat->asset_id = null; $licenseSeat->notes = $request->input('notes'); // Was the asset updated? if ($licenseSeat->save()) { event(new CheckoutableCheckedIn($licenseSeat, $return_to, auth()->user(), $request->input('notes'))); if ($backTo == 'user') { return redirect()->route('users.show', $return_to->id)->with('success', trans('admin/licenses/message.checkin.success')); } return redirect()->route('licenses.show', $licenseSeat->license_id)->with('success', trans('admin/licenses/message.checkin.success')); } // Redirect to the license page with error return redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.checkin.error')); } /** * Bulk checkin all license seats * * @author [A. Gianotto] [] * @see LicenseCheckinController::create() method that provides the form view * @since [v6.1.1] * @return \Illuminate\Http\RedirectResponse * @throws \Illuminate\Auth\Access\AuthorizationException */ public function bulkCheckin(Request $request, $licenseId) { $license = License::findOrFail($licenseId); $this->authorize('checkin', $license); if (! $license->reassignable) { // Not allowed to checkin Session::flash('error', 'License not reassignable.'); return redirect()->back()->withInput(); } $licenseSeatsByUser = LicenseSeat::where('license_id', '=', $licenseId) ->whereNotNull('assigned_to') ->with('user') ->get(); foreach ($licenseSeatsByUser as $user_seat) { $user_seat->assigned_to = null; if ($user_seat->save()) { Log::debug('Checking in '.$license->name.' from user '.$user_seat->username); $user_seat->logCheckin($user_seat->user, trans('admin/licenses/general.bulk.checkin_all.log_msg')); } } $licenseSeatsByAsset = LicenseSeat::where('license_id', '=', $licenseId) ->whereNotNull('asset_id') ->with('asset') ->get(); $count = 0; foreach ($licenseSeatsByAsset as $asset_seat) { $asset_seat->asset_id = null; if ($asset_seat->save()) { Log::debug('Checking in '.$license->name.' from asset '.$asset_seat->asset_tag); $asset_seat->logCheckin($asset_seat->asset, trans('admin/licenses/general.bulk.checkin_all.log_msg')); $count++; } } return redirect()->back()->with('success', trans_choice('admin/licenses/general.bulk.checkin_all.success', 2, ['count' => $count] )); } }