] * @see ComponentCheckoutController::store() method that stores the data. * @since [v3.0] * @param int $componentId * @return \Illuminate\Contracts\View\View * @throws \Illuminate\Auth\Access\AuthorizationException */ public function create($componentId) { // Check if the component exists if (is_null($component = Component::find($componentId))) { // Redirect to the component management page with error return redirect()->route('components.index')->with('error', trans('admin/components/message.not_found')); } $this->authorize('checkout', $component); return view('components/checkout', compact('component')); } /** * Validate and store checkout data. * * @author [A. Gianotto] [] * @see ComponentCheckoutController::create() method that returns the form. * @since [v3.0] * @param Request $request * @param int $componentId * @return \Illuminate\Http\RedirectResponse * @throws \Illuminate\Auth\Access\AuthorizationException */ public function store(Request $request, $componentId) { // Check if the component exists if (is_null($component = Component::find($componentId))) { // Redirect to the component management page with error return redirect()->route('components.index')->with('error', trans('admin/components/message.not_found')); } $this->authorize('checkout', $component); $max_to_checkout = $component->numRemaining(); $validator = Validator::make($request->all(), [ 'asset_id' => 'required', 'assigned_qty' => "required|numeric|between:1,$max_to_checkout", ]); if ($validator->fails()) { return redirect()->back() ->withErrors($validator) ->withInput(); } $admin_user = Auth::user(); $asset_id = e($request->input('asset_id')); // Check if the user exists if (is_null($asset = Asset::find($asset_id))) { // Redirect to the component management page with error return redirect()->route('components.index')->with('error', trans('admin/components/message.asset_does_not_exist')); } // Update the component data $component->asset_id = $asset_id; $component->assets()->attach($component->id, [ 'component_id' => $component->id, 'user_id' => $admin_user->id, 'created_at' => date('Y-m-d H:i:s'), 'assigned_qty' => $request->input('assigned_qty'), 'asset_id' => $asset_id, 'note' => $request->input('note'), ]); event(new CheckoutableCheckedOut($component, $asset, Auth::user(), $request->input('note'))); return redirect()->route('components.index')->with('success', trans('admin/components/message.checkout.success')); } }