. * * 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\Core\MassAction; use Espo\Core\Exceptions\BadRequest; use Espo\Core\Exceptions\Forbidden; use Espo\ORM\Query\Select; use Espo\Core\Select\SelectBuilderFactory; use Espo\Entities\User; class QueryBuilder { public function __construct(private SelectBuilderFactory $selectBuilderFactory, private User $user) {} /** * @throws BadRequest * @throws Forbidden */ public function build(Params $params): Select { $builder = $this->selectBuilderFactory ->create() ->from($params->getEntityType()) ->forUser($this->user) ->withStrictAccessControl(); if ($params->hasIds()) { return $builder ->buildQueryBuilder() ->where([ 'id' => $params->getIds(), ]) ->build(); } return $builder ->withSearchParams($params->getSearchParams()) ->build(); } }