/** * Save link user filter with filter * Requirement fields: USER_ID, FILTER_ID * * @param array $fields * @return \Bitrix\Main\Entity\AddResult * @throws \InvalidArgumentException */ public function addFilterUser(array $fields) { $userId = $fields['USER_ID']; $userData = \CUser::GetById($userId)->GetNext(); if ($this->isEmptyResult($userData)) { throw new \InvalidArgumentException('Invalid USER_ID'); } $queryBuilder = new Entity\Query(Model\SubscribeTable::getEntity()); $subscribe = $queryBuilder->setSelect(array('ID'))->setFilter(array('ID' => $fields['FILTER_ID']))->exec()->fetch(); if ($this->isEmptyResult($subscribe)) { throw new \InvalidArgumentException('Invalid FILTER_ID'); } $filterUserData = Model\SubscribeUserTable::getList(array('select' => array('ID'), 'filter' => array('USER_ID' => $userId, 'FILTER_ID' => $subscribe['ID'])))->fetch(); if (!$this->isEmptyResult($filterUserData)) { $addResult = new \Bitrix\Main\Entity\AddResult(); $addResult->setId($filterUserData['ID']); return $addResult; } $filterUserResult = Model\SubscribeUserTable::add(array('USER_ID' => $userData['ID'], 'FILTER_ID' => $subscribe['ID'])); if ($filterUserResult->isSuccess()) { Model\SubscribeStackTable::add(array('FILTER_USER_ID' => $filterUserResult->getId(), 'ACTION' => 'INSERT')); } return $filterUserResult; }