. * * 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\Tools\Notification\Api; use Espo\Core\Api\Action; use Espo\Core\Api\Request; use Espo\Core\Api\Response; use Espo\Core\Api\ResponseComposer; use Espo\Core\Exceptions\BadRequest; use Espo\Core\Record\SearchParamsFetcher; use Espo\Core\Select\Where\Item as WhereItem; use Espo\Entities\Notification; use Espo\Tools\Notification\GroupAllService; /** * @noinspection PhpUnused */ class GetGroupAll implements Action { public function __construct( private GroupAllService $service, private SearchParamsFetcher $searchParamsFetcher, ) {} public function process(Request $request): Response { $type = $request->getQueryParam('type') ?? throw new BadRequest("No `type`."); $id = $request->getQueryParam('id') ?? throw new BadRequest("No `id`."); $searchParams = $this->searchParamsFetcher->fetch($request); $beforeNumber = $request->getQueryParam('beforeNumber'); if ($beforeNumber) { $searchParams = $searchParams ->withWhereAdded( WhereItem ::createBuilder() ->setAttribute(Notification::ATTR_NUMBER) ->setType(WhereItem\Type::LESS_THAN) ->setValue($beforeNumber) ->build() ); } $collection = $this->service->get($type, $id, $searchParams); return ResponseComposer::json( $collection->toApiOutput() ); } }