public function buildFilterList(array $params)
 {
     $factory = new \App_ListFilter_FilterFactory();
     $factory->setWhiteList(ReportFilterFields::getWhiteList());
     $factory->setGroupingWhiteList(ReportGroups::getWhiteList());
     if (!isset($params[ReportFilterFields::REPORT_TYPE])) {
         $e = new MissingParameterException("You must filter report by type");
         $e->setParamName(ReportFilterFields::REPORT_TYPE);
         throw $e;
     }
     $map = array(ReportModel::PRESENCE_DAILY => ReportModel::REPORT_GROUPS_SUPERVISION, ReportModel::PRESENCE_MONTHLY => ReportModel::REPORT_GROUPS_SUPERVISION, ReportModel::LOCATION_DAILY => ReportModel::REPORT_GROUPS_SUPERVISION, ReportModel::LOCATION_MONTHLY => ReportModel::REPORT_GROUPS_SUPERVISION, ReportModel::OPENED_SUP_ALARMS_DAILY => ReportModel::REPORT_GROUPS_SUPERVISION, ReportModel::OPENED_SUP_ALARMS_MONTHLY => ReportModel::REPORT_GROUPS_SUPERVISION, ReportModel::CLOSED_SUP_ALARMS_DAILY => ReportModel::REPORT_GROUPS_SUPERVISION, ReportModel::CLOSED_SUP_ALARMS_MONTHLY => ReportModel::REPORT_GROUPS_SUPERVISION, ReportModel::ACCUMULATED_SUMMARY_DAILY => ReportModel::REPORT_GROUPS_SUPERVISION, ReportModel::EXPENSE_DETAIL_MONTHLY => ReportModel::REPORT_GROUPS_CHARGES_DETAIL, ReportModel::EXPENSE_DETAIL_DAILY => ReportModel::REPORT_GROUPS_CHARGES_DETAIL, ReportModel::CONSUMPTION_DETAIL_DAILY => ReportModel::REPORT_GROUPS_CHARGES_DETAIL, ReportModel::SUBSCRIPTION_BASE_MONTHLY => ReportModel::REPORT_GROUPS_SUBSCRIPTION_BASE, ReportModel::SUBSCRIPTION_SNAPSHOT_DAILY => ReportModel::REPORT_GROUPS_SUBSCRIPTION_SNAPSHOT, ReportModel::KPI_MONTHLY => ReportModel::REPORT_GROUPS_KPI, ReportModel::CONSUMPTION_DAILY => ReportModel::REPORT_GROUPS_CONSUMPTION, ReportModel::SMIP_CONSUMPTION_MONTHLY => ReportModel::REPORT_GROUPS_SMIP_CONSUMPTION, ReportModel::SMIP_CONSUMPTION_DAILY => ReportModel::REPORT_GROUPS_SMIP_CONSUMPTION);
     if (!isset($map[$params[ReportFilterFields::REPORT_TYPE]])) {
         throw new InvalidArgumentException("Invalid report type");
     }
     $params[ReportFilterFields::REPORT_GROUP] = $map[$params[ReportFilterFields::REPORT_TYPE]];
     $filterList = $factory->constructFilter($params);
     $filterList->setResourceId(ReportFilterFields::getResourceId());
     $filterList->addExtraData('filterType', 'report');
     \App::log()->debug('Unused filters [' . implode(',', $factory->getUnusedList()) . ']');
     return $filterList;
 }
 /**
  * Builds a filter list based on params.
  * @param  array          $params
  * @return App_ListFilter | null
  */
 public function buildFilterList(array $params)
 {
     $factory = new \App_ListFilter_FilterFactory();
     $fields = SimFilterFields::getWhiteList();
     $factory->setWhiteList($fields);
     $sortingFields = SimSortingFields::getWhiteList();
     $factory->setSortingWhiteList($sortingFields);
     $factory->setGroupingWhiteList(SimGroups::getWhiteList());
     $factory->setAllowEmpty(true);
     //Black list for no monetary users
     $user = \App::getUserLogged();
     if (!$user->monetaryDataAccess) {
         $factory->setBlackList(SimFilterFields::getNoMonetaryUserBlackList());
         $factory->setSortingBlackList(SimSortingFields::getNoMonetaryUserBlackList());
         $factory->setGroupingBlackList(SimGroups::getNoMonetaryUserBlackList());
     }
     $filterList = $factory->constructFilter($params);
     $filterList->setValidators(SimFilterFields::getValidatorSpec());
     if (!$filterList->isValid()) {
         $filterList = $factory->constructFilter(array());
     }
     $filterList->setResourceId(SimFilterFields::getResourceId());
     $filterList->addExtraData('filterType', 'sims');
     \App::log()->debug('Unused filters [' . implode(',', $factory->getUnusedList()) . ']');
     return $filterList;
 }