execute($addToCartData, Auth::user()); return new CartResource($cart); } /** * Display the specified resource. */ public function show(GetActiveUserCartAction $action) { return new CartResource($action->execute(Auth::user())); } /** * Update the specified resource in storage. */ public function update(UpdateProductInCartRequest $request, UpdateProductInCartAction $action) { $updateCartData = AddToCartDTO::fromRequest($request); $cart = $action->execute($updateCartData, $request->user()); return new CartResource($cart); } /** * Remove the specified resource from storage. */ public function destroy(RemoveProductFromCartRequest $request, RemoveProductFromCartAction $action) { $user = $request->user(); try { $cart = $action->execute($request->productId, $user); return new CartResource($cart); } catch (ModelNotFoundException $e) { Log::error('No active cart found when removing a product from cart.', [ 'user' => $user->id, 'error' => $e->getMessage(), ]); return response()->json([ 'message' => 'No active cart found.', ], 404); } catch (MultipleRecordsFoundException $e) { Log::error('Multiple active carts found for the user', [ 'user' => $user->id, 'error' => $e->getMessage(), ]); return response()->json([ 'message' => 'Multiple Active carts found.', ], 409); } } }