/**
  * 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;
 }