guard = request()->has('token') ? 'api' : 'customer'; auth()->setDefaultDriver($this->guard); $this->reviewRepository = $reviewRepository; } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function store(Request $request, $id) { $customer = auth($this->guard)->user(); $validator = Validator::make($request->all(), [ 'comment' => 'required', 'rating' => 'required|numeric|min:1|max:5', 'title' => 'required', ]); if ($validator->fails()) { return response($validator->errors(), Response::HTTP_BAD_REQUEST); } $productReview = $this->reviewRepository->create([ 'customer_id' => $customer ? $customer->id : null, 'name' => $customer ? $customer->name : $request->get('name'), 'status' => 'pending', 'product_id' => $id, 'comment' => $request->comment, 'rating' => $request->rating, 'title' => $request->title ]); return response()->json([ 'message' => 'Your review submitted successfully.', 'data' => new ProductReviewResource($this->reviewRepository->find($productReview->id)), ]); } }