. */ namespace SP\Modules\Web\Controllers; use DI\DependencyException; use DI\NotFoundException; use Exception; use SP\Core\Events\Event; use SP\Core\Exceptions\SessionTimeout; use SP\Http\JsonResponse; use SP\Modules\Web\Controllers\Traits\JsonTrait; use SP\Services\Account\AccountToFavoriteService; /** * Class AccountFavoriteController * * @package SP\Modules\Web\Controllers */ final class AccountFavoriteController extends SimpleControllerBase { use JsonTrait; private ?AccountToFavoriteService $accountFavoriteService = null; /** * @param int $accountId * * @return bool * @throws \DI\DependencyException * @throws \DI\NotFoundException * @throws \JsonException */ public function markAction(int $accountId): bool { try { $this->accountFavoriteService->add( $accountId, $this->session->getUserData()->getId() ); return $this->returnJsonResponse( JsonResponse::JSON_SUCCESS, __u('Favorite added') ); } catch (Exception $e) { processException($e); $this->eventDispatcher->notifyEvent( 'exception', new Event($e) ); return $this->returnJsonResponseException($e); } } /** * @param int $accountId * * @return bool * @throws \DI\DependencyException * @throws \DI\NotFoundException * @throws \JsonException */ public function unmarkAction(int $accountId): bool { try { $this->accountFavoriteService->delete( $accountId, $this->session->getUserData()->getId() ); return $this->returnJsonResponse( JsonResponse::JSON_SUCCESS, __u('Favorite deleted') ); } catch (Exception $e) { processException($e); $this->eventDispatcher->notifyEvent( 'exception', new Event($e) ); return $this->returnJsonResponseException($e); } } /** * @throws DependencyException * @throws NotFoundException * @throws SessionTimeout */ protected function initialize(): void { $this->checks(); $this->accountFavoriteService = $this->dic->get(AccountToFavoriteService::class); } }