privilegeService = $privilegeService; $this->authService = $authService; $this->postService = $postService; $this->favoritesService = $favoritesService; $this->userViewProxy = $userViewProxy; } public function getMethods() { return ['POST', 'PUT']; } public function getUrl() { return '/api/posts/:postNameOrId/favorites'; } public function work($args) { $this->privilegeService->assertLoggedIn(); $user = $this->authService->getLoggedInUser(); $post = $this->postService->getByNameOrId($args['postNameOrId']); $this->favoritesService->addFavorite($user, $post); $users = $this->favoritesService->getFavoriteUsers($post); return ['data' => $this->userViewProxy->fromArray($users)]; } }