. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Controllers; use Espo\Core\Name\Field; use Espo\Tools\Notification\RecordService as Service; use Espo\Core\Api\Request; use Espo\Core\Api\Response; use Espo\Core\Controllers\RecordBase; use Espo\Core\Exceptions\BadRequest; use Espo\Core\Exceptions\Error; use Espo\Core\Exceptions\Forbidden; use Espo\Core\Select\SearchParams; use Espo\Core\Select\Where\Item as WhereItem; use stdClass; class Notification extends RecordBase { public static $defaultAction = 'list'; /** * @throws BadRequest * @throws Forbidden * @throws Error */ public function getActionList(Request $request, Response $response): stdClass { $searchParamsAux = $this->searchParamsFetcher->fetch($request); $offset = $searchParamsAux->getOffset(); $maxSize = $searchParamsAux->getMaxSize(); $after = $request->getQueryParam('after'); $searchParams = SearchParams ::create() ->withOffset($offset) ->withMaxSize($maxSize); if ($after) { $searchParams = $searchParams ->withWhereAdded( WhereItem ::createBuilder() ->setAttribute(Field::CREATED_AT) ->setType(WhereItem\Type::AFTER) ->setValue($after) ->build() ); } $recordCollection = $this->getNotificationService()->get($this->user, $searchParams); return $recordCollection->toApiOutput(); } public function getActionNotReadCount(): int { $userId = $this->user->getId(); return $this->getNotificationService()->getNotReadCount($userId); } public function postActionMarkAllRead(Request $request): bool { $userId = $this->user->getId(); $this->getNotificationService()->markAllRead($userId); return true; } private function getNotificationService(): Service { return $this->injectableFactory->create(Service::class); } }