protected function _addGroup(GroupListModel $result, $filterList, $filterArray, $label, $avoidClosed = false)
 {
     try {
         //Closed alarms
         $newFilterList = clone $filterList;
         if ($avoidClosed) {
             $filterArray[] = array('fieldName' => AlarmFilterFields::STATE, 'value' => AlarmModel::STATE_CLOSED, 'inverted' => true);
         }
         foreach ($filterArray as $filter) {
             $newFilterList->addFilter(new \App_ListFilter_EqualFilter($filter));
         }
         $partialResult = $this->_alarmSrv->listAll($newFilterList, array('paging' => array('count' => 0)));
         if ($partialResult instanceof ListResultModel) {
             $result->addGroup(new GroupCountResultModel(array('label' => $label, 'stream' => $partialResult)));
         }
     } catch (PermissionException $e) {
         //Nothing to do
     } catch (NotAllowedException $e) {
         //Nothing to do
     }
 }
 public function init()
 {
     $this->_service = \Application\Service\AlarmService::getInstance();
 }
 /**
  * Add alarms list to sim
  *
  * @param SimModel $sim
  */
 protected function _addAlarms(SimModel $sim)
 {
     try {
         // Aggregators cannot list alarms, but they can retrieve
         // alarm list for a sim. Strange behavior, I know.
         // GLOBALPORTAL-94024
         //             $dumbModel = new AlarmModel();
         //             $this->_helper->allowed('list', $dumbModel);
         $result = array();
         /**
          * @var $alarmService \Application\Service\AlarmService
          */
         $alarmService = \Application\Service\AlarmService::getInstance();
         //prepare filter
         $filterValues = array();
         $filterValues[AlarmFilterFields::SIM_ICC] = $sim->getIcc();
         $filterValues[AlarmFilterFields::STATE] = "!" . AlarmModel::STATE_CLOSED;
         $filterValues['sortBy'] = AlarmSortingFields::OPEN_TIME;
         if (\App::getOrgUserLogged()->type == OrgAggregatorModel::ORG_TYPE) {
             $filterValues[AlarmFilterFields::ALARM_TYPE] = "!" . AlarmModel::TYPE_SUPERVISION;
         }
         $filterList = $alarmService->buildFilterList($filterValues);
         $alarms = $alarmService->listAll($filterList);
         $alarms->getIterator()->addPlugin(new Stream\Plugin\Allowed(array('permission' => 'read')));
         $alarms->getIterator()->addPlugin(new Stream\Plugin\FilterNotAllowedFields(array('permission' => 'read_field')));
         // Add list to sim response
         $sim->setAlarms($alarms->getItems());
     } catch (\Exception $e) {
         App::log()->err("An exception occurred while retrieving alarms: " . $e->getMessage());
         // No, do nothing
     }
 }