public function indexAction() { $dumpOrg = new OrgCustomerModel(); $this->_helper->allowed('list', $dumpOrg); $params = $this->_getPaginatorParams(); $filters = $this->_getFilterParams(); if (isset($filters['customerID'])) { $filters['customerId'] = $filters['customerID']; unset($filters['customerID']); } if (isset($filters['billingAccountID'])) { $filters['billingAccountId'] = $filters['billingAccountID']; unset($filters['billingAccountID']); } if (isset($filters['startDate'])) { $filters['creationPeriod'] = $filters['startDate'] . '<>'; unset($filters['startDate']); } if (isset($filters['endDate'])) { if (!isset($filters['creationPeriod'])) { $filters['creationPeriod'] = '<>'; } $filters['creationPeriod'] .= $filters['endDate']; unset($filters['endDate']); } $this->_checkFilterParams($filters, array_merge(CustomerFilterFields::getWhiteList(), array('id'))); $filters['type'] = OrgCustomerModel::ORG_TYPE; $filterList = $this->_orgSrv->buildFilterList($filters); $this->_helper->filterNotAllowedFilters('filter_by', $filterList); if ($filterList !== null) { $params['filterList'] = $filterList; } $customerList = $this->_orgSrv->listAll(Application\Model\Organization\OrgCustomerModel::ORG_TYPE, $params); $orgs = array(); if (!$customerList instanceof Application\Model\ListResultModel) { throw new AppEx\UnexpectedException('No list returned'); } $items = $customerList->getItems(); // Pagination $items = array_slice($items, $params['startIndex'], $params['maxBatchSize']); foreach ($items as $item) { try { $org = $this->_orgSrv->load($item->id); $this->_helper->filterNotAllowedFields('read_field', $org); if ($org) { $orgs[] = $this->_mapToSdp($org->exportData()); } } catch (Exception $e) { } } // Make data available on the view $this->view->customerData = $orgs; }
/** * Builds a filter list based on params. * @param array $params * @return App_ListFilter | null */ public function buildFilterList(array $params) { if (!isset($params['type']) || !in_array($params['type'], array(OrgMasterModel::ORG_TYPE, OrgServiceProviderModel::ORG_TYPE, OrgCustomerModel::ORG_TYPE, OrgAggregatorModel::ORG_TYPE))) { return; } $orgType = $params['type']; unset($params['type']); if ($orgType === OrgServiceProviderModel::ORG_TYPE && \App::getOrgUserLogged()->getType() === OrgServiceProviderModel::ORG_TYPE) { if (!isset($params[ServiceProviderFilterFields::SERVICE_PROVIDER_ID_FOR_COMMERCIALS])) { $params[ServiceProviderFilterFields::SERVICE_PROVIDER_ID_FOR_COMMERCIALS] = \App::getOrgUserLogged()->id; } } $factory = new \App_ListFilter_FilterFactory(); $filterFieldsMap = array(OrgMasterModel::ORG_TYPE => '\\Application\\Model\\Filter\\Organization\\MasterFilterFields', OrgServiceProviderModel::ORG_TYPE => '\\Application\\Model\\Filter\\Organization\\ServiceProviderFilterFields', OrgCustomerModel::ORG_TYPE => '\\Application\\Model\\Filter\\Organization\\CustomerFilterFields', OrgAggregatorModel::ORG_TYPE => '\\Application\\Model\\Filter\\Organization\\AggregatorFilterFields'); $filterFieldsValidatorsMap = array(OrgMasterModel::ORG_TYPE => MasterFilterFields::getValidatorSpec(), OrgServiceProviderModel::ORG_TYPE => ServiceProviderFilterFields::getValidatorSpec(), OrgCustomerModel::ORG_TYPE => CustomerFilterFields::getValidatorSpec(), OrgAggregatorModel::ORG_TYPE => AggregatorFilterFields::getValidatorSpec()); if (isset($filterFieldsMap[$orgType])) { $class = $filterFieldsMap[$orgType]; $factory->setWhiteList($class::getWhiteList()); } $filterList = $factory->constructFilter($params); if (isset($class)) { $filterList->setResourceId($class::getResourceId()); } \App::log()->debug('Unused filters [' . implode(',', $factory->getUnusedList()) . ']'); $filterList->setValidators($filterFieldsValidatorsMap[$orgType]); return $filterList->isValid() ? $filterList : null; }