diff --git a/app/Http/Controllers/Accessories/AccessoryCheckoutController.php b/app/Http/Controllers/Accessories/AccessoryCheckoutController.php index 103cbd09b0..19c8c6c7c5 100644 --- a/app/Http/Controllers/Accessories/AccessoryCheckoutController.php +++ b/app/Http/Controllers/Accessories/AccessoryCheckoutController.php @@ -4,12 +4,12 @@ namespace App\Http\Controllers\Accessories; use App\Events\CheckoutableCheckedOut; use App\Http\Controllers\Controller; +use App\Http\Requests\AccessoryCheckoutRequest; use App\Models\Accessory; use App\Models\User; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\DB; use \Illuminate\Contracts\View\View; use \Illuminate\Http\RedirectResponse; @@ -57,44 +57,29 @@ class AccessoryCheckoutController extends Controller * * @author [A. Gianotto] [] * @param Request $request - * @param int $accessoryId + * @param int $accessory */ - public function store(Request $request, $accessoryId) : RedirectResponse + public function store(AccessoryCheckoutRequest $request, Accessory $accessory) : RedirectResponse { - // Check if the accessory exists - if (is_null($accessory = Accessory::withCount('users as users_count')->find($accessoryId))) { - // Redirect to the accessory management page with error - return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.user_not_found')); - } $this->authorize('checkout', $accessory); + $accessory->assigned_to = $request->input('assigned_to'); + $user = User::find($request->input('assigned_to')); + $accessory->checkout_qty = $request->input('checkout_qty', 1); - if (!$user = User::find($request->input('assigned_to'))) { - return redirect()->route('accessories.checkout.show', $accessory->id)->with('error', trans('admin/accessories/message.checkout.user_does_not_exist')); + for ($i = 0; $i < $accessory->checkout_qty; $i++) { + $accessory->users()->attach($accessory->id, [ + 'accessory_id' => $accessory->id, + 'created_at' => Carbon::now(), + 'user_id' => Auth::id(), + 'assigned_to' => $request->input('assigned_to'), + 'note' => $request->input('note'), + ]); } - - // Make sure there is at least one available to checkout - if ($accessory->numRemaining() <= 0){ - return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.checkout.unavailable')); - } - - - // Update the accessory data - $accessory->assigned_to = e($request->input('assigned_to')); - - $accessory->users()->attach($accessory->id, [ - 'accessory_id' => $accessory->id, - 'created_at' => Carbon::now(), - 'user_id' => Auth::id(), - 'assigned_to' => $request->get('assigned_to'), - 'note' => $request->input('note'), - ]); - - DB::table('accessories_users')->where('assigned_to', '=', $accessory->assigned_to)->where('accessory_id', '=', $accessory->id)->first(); - event(new CheckoutableCheckedOut($accessory, $user, auth()->user(), $request->input('note'))); // Redirect to the new accessory page - return redirect()->route('accessories.index')->with('success', trans('admin/accessories/message.checkout.success')); + return redirect()->route('accessories.index') + ->with('success', trans('admin/accessories/message.checkout.success')); } }