validated(); /** @var \App\Models\Product|\App\Models\Recipe $relatedModel */ $relatedModel = app($validated['rating_type'])::findOrFail($validated['rating_id']); // Delete rating. if ($validated['rate'] == 0) { Rating::query()->where([ ['customer_id', $validated['customer_id']], ['rating_id', $validated['rating_id']], ['rating_type', $validated['rating_type']], ])->first()->delete(); return response()->json([ 'message' => trans('Votre note a bien été supprimée !'), 'data' => Rating::resetCache($relatedModel), ]); } // Save or update rating. Rating::updateOrCreate( [ 'customer_id' => $validated['customer_id'], 'rating_id' => $validated['rating_id'], 'rating_type' => $validated['rating_type'], ], [ 'rate' => $validated['rate'], ] ); return response()->json([ 'message' => trans('Votre note a bien été enregistrée !'), 'data' => Rating::resetCache($relatedModel), ]); }); } }