success(['dishes' => DishResource::collection(Dish::all())]); } public function store(StoreDishRequest $request): JsonResponse { $dish = (new CreateDishAction)->execute($request->validated()); return $this->success(['dish' => new DishResource($dish)]); } public function show(Dish $dish): JsonResponse { Gate::authorize('view', $dish); return $this->success(['dish' => new DishResource($dish)]); } public function update(UpdateDishRequest $request, Dish $dish): JsonResponse { Gate::authorize('update', $dish); $dish = (new UpdateDishAction)->execute($dish, $request->validated()); return $this->success(['dish' => new DishResource($dish)]); } public function destroy(Dish $dish): JsonResponse { Gate::authorize('delete', $dish); (new DeleteDishAction)->execute($dish); return $this->success(null); } public function syncUsers(SyncUsersRequest $request, Dish $dish): JsonResponse { (new SyncUsersAction)->execute($dish, Arr::get($request->validated(), 'users', [])); return $this->success(['dish' => new DishResource($dish->refresh())]); } public function addUsers(AddUsersToDishRequest $request, Dish $dish): JsonResponse { Gate::authorize('update', $dish); (new AddUsersToDishAction)->execute($dish, Arr::get($request->validated(), 'users', [])); return $this->success(['dish' => new DishResource($dish->refresh())]); } public function removeUsers(RemoveUsersFromDishRequest $request, Dish $dish): JsonResponse { (new RemoveUsersFromDishAction)->execute($dish, Arr::get($request->validated(), 'users', [])); return $this->success(['dish' => new DishResource($dish->refresh())]); } }