public function getReportAction() { $baseId = (int) $this->_getParam('baseId'); $data = array('filters' => array(), 'views' => array()); $reportBase = new ReportBase(); $reportBase->reportBaseId = $baseId; $reportBase->populate(); foreach ($reportBase->reportFilters as $reportFilter) { $filter = array(); $filter['id'] = $reportFilter->id; $filter['name'] = $reportFilter->name; $filter['defaultValue'] = $reportFilter->defaultValue; $filter['type'] = $reportFilter->type; $filter['options'] = $reportFilter->options; if ($reportFilter->type == ReportBase::FILTER_TYPE_ENUM) { $enumerationClosure = new EnumerationClosure(); $filter['enums'] = array(); $paths = $enumerationClosure->generatePaths($reportFilter->enumName['id']); foreach ($paths as $id => $name) { $filter['enums'][] = array('id' => $id, 'name' => $name); } } else { if ($reportFilter->type == ReportBase::FILTER_TYPE_QUERY) { $reportQuery = new ReportQuery(); $reportQuery->reportBaseId = (int) $reportBase->reportBaseId; $reportQueryIterator = $reportQuery->getIteratorByBaseId(null, ReportQuery::TYPE_SQL); $filter['queries'] = array(); foreach ($reportQueryIterator as $query) { $filter['queries'][] = array('id' => $query->reportQueryId, 'name' => $query->displayName); } } } $data['filters'][] = $filter; } $reportView = new ReportView(); $filters = array('reportBaseId' => $reportBase->reportBaseId, 'active' => 1); $reportViewIterator = $reportView->getIteratorByFilters($filters); foreach ($reportViewIterator as $view) { $row = array(); $row['id'] = $view->reportViewId; $row['data'] = array(); $row['data'][] = $view->displayName; $row['data'][] = $view->runQueriesImmediately; $row['data'][] = strlen($view->showResultsIn) > 0 ? $view->showResultsIn : 'grid'; $data['views'][] = $row; } $this->view->filterTypes = ReportBase::getFilterTypes(); $json = Zend_Controller_Action_HelperBroker::getStaticHelper('json'); $json->suppressExit = true; $json->direct($data); }
public function getReportAction() { $baseId = (int) $this->_getParam('baseId'); $data = array('filters' => array(), 'views' => array()); $reportBase = new ReportBase(); $reportBase->reportBaseId = $baseId; $reportBase->populate(); foreach ($reportBase->reportFilters as $reportFilter) { $filter = array(); $filter['id'] = $reportFilter->id; $filter['name'] = $reportFilter->name; $filter['defaultValue'] = $reportFilter->defaultValue; $filter['type'] = $reportFilter->type; $filter['options'] = $reportFilter->options; $list = null; if ($reportFilter->type == ReportBase::FILTER_TYPE_ENUM) { $enumerationClosure = new EnumerationClosure(); $filter['enums'] = array(); $paths = $enumerationClosure->generatePaths($reportFilter->enumName['id']); foreach ($paths as $id => $name) { $filter['enums'][] = array('id' => $id, 'name' => $name); } } else { if ($reportFilter->type == ReportBase::FILTER_TYPE_QUERY) { $reportQuery = new ReportQuery(); $reportQuery->reportQueryId = (int) $reportFilter->query; $reportQuery->populate(); $filter['queries'] = $reportQuery->executeQuery(); if ($reportFilter->includeBlank) { array_unshift($filter['queries'], array('id' => '', 'name' => ' ')); } } else { if ($reportFilter->type == ReportBase::FILTER_TYPE_LIST_BUILDING) { $orm = new Building(); $list = array('ormIterator' => $orm->getIterator(), 'id' => 'buildingId', 'name' => 'displayName'); } else { if ($reportFilter->type == ReportBase::FILTER_TYPE_LIST_PRACTICE) { $orm = new Practice(); $list = array('ormIterator' => $orm->getIterator(), 'id' => 'practiceId', 'name' => 'name'); } else { if ($reportFilter->type == ReportBase::FILTER_TYPE_LIST_PROVIDER) { $orm = new Provider(); $list = array('ormIterator' => $orm->getIter(), 'id' => 'personId', 'name' => 'displayName'); } else { if ($reportFilter->type == ReportBase::FILTER_TYPE_LIST_ROOM) { $orm = new Room(); $list = array('ormIterator' => $orm->getIterator(), 'id' => 'roomId', 'name' => 'displayName'); } else { if ($reportFilter->type == ReportBase::FILTER_TYPE_LIST_BUILDING_PREF || $reportFilter->type == ReportBase::FILTER_TYPE_LIST_ROOM_PREF || $reportFilter->type == ReportBase::FILTER_TYPE_LIST_PROVIDER_PREF) { $room = User::myPreferencesLocation(); $practiceId = (int) $room->building->practiceId; $buildingId = (int) $room->buildingId; if ($reportFilter->type == ReportBase::FILTER_TYPE_LIST_BUILDING_PREF) { $orm = new Building(); $orm->practiceId = $practiceId; $list = array('ormIterator' => $orm->getIteratorByPracticeId(), 'id' => 'buildingId', 'name' => 'displayName'); } else { if ($reportFilter->type == ReportBase::FILTER_TYPE_LIST_ROOM_PREF) { $orm = new Room(); $orm->buildingId = $buildingId; $list = array('ormIterator' => $orm->getIteratorByBuildingId(), 'id' => 'roomId', 'name' => 'displayName'); } else { $orm = new Provider(); $list = array('ormIterator' => $orm->getIteratorByPracticeId($practiceId), 'id' => 'personId', 'name' => 'displayName'); } } } } } } } } } if ($list !== null) { $filter['lists'] = array(); foreach ($list['ormIterator'] as $row) { $filter['lists'][] = array('id' => $row->{$list['id']}, 'name' => htmlspecialchars($row->{$list['name']})); } } $data['filters'][] = $filter; } $reportView = new ReportView(); $filters = array('reportBaseId' => $reportBase->reportBaseId, 'active' => 1); $reportViewIterator = $reportView->getIteratorByFilters($filters); foreach ($reportViewIterator as $view) { $row = array(); $row['id'] = $view->reportViewId; $row['data'] = array(); $row['data'][] = $view->displayName; $row['data'][] = $view->runQueriesImmediately; $row['data'][] = strlen($view->showResultsIn) > 0 ? $view->showResultsIn : 'grid'; $data['views'][] = $row; } $this->view->filterTypes = ReportBase::getFilterTypes(); $json = Zend_Controller_Action_HelperBroker::getStaticHelper('json'); $json->suppressExit = true; $json->direct($data); }
protected function _editFilter($filterId = 0, $mode = 'add') { $this->view->filterId = $filterId; $baseId = (int) $this->_getParam('baseId'); $this->view->baseId = $baseId; $reportBase = new ReportBase(); if ($baseId > 0) { $reportBase->reportBaseId = $baseId; $reportBase->populate(); } else { $this->view->error = __('Report does not exists.'); } $filterTypes = ReportBase::getFilterTypes(); $types = array(); foreach ($filterTypes as $key => $value) { $types[$key] = $key; } $this->view->types = $types; $this->view->options = ReportBase::$_filterOptions; $filters = array(); if (strlen($reportBase->filters) > 0) { $filters = unserialize($reportBase->filters); } $filterData = array('id' => '', 'name' => '', 'defaultValue' => '', 'type' => '', 'options' => array(), 'query' => '', 'includeBlank' => '', 'enumName' => array('id' => '', 'value' => ''), 'special' => ''); if (isset($filters[$filterId])) { $filter = $filters[$filterId]; $filterData = array('id' => $filter->id, 'name' => $filter->name, 'defaultValue' => $filter->defaultValue, 'type' => $filter->type, 'options' => $filter->options, 'query' => $filter->query, 'includeBlank' => $filter->includeBlank, 'enumName' => $filter->enumName, 'special' => $filter->special); } $this->view->filterData = $filterData; $reportQuery = new ReportQuery(); $reportQuery->reportBaseId = $baseId; $this->view->reportQueries = $reportQuery->getIteratorByBaseId()->toArray('reportQueryId', 'displayName'); $this->view->reportSpecial = ReportBase::$_specialOptions; $this->render('edit-filter'); }
protected function _editFilter($filterId = 0, $mode = 'add') { $this->view->filterId = $filterId; $baseId = (int) $this->_getParam('baseId'); $this->view->baseId = $baseId; $reportBase = new ReportBase(); if ($baseId > 0) { $reportBase->reportBaseId = $baseId; $reportBase->populate(); } else { $this->view->error = __('Report does not exists.'); } $filterTypes = ReportBase::getFilterTypes(); $types = array(); foreach ($filterTypes as $key => $value) { $types[$key] = $key; } $this->view->types = $types; $this->view->options = ReportBase::$_filterOptions; $filters = array(); if (strlen($reportBase->filters) > 0) { $filters = unserialize($reportBase->filters); } $filterData = array('id' => '', 'name' => '', 'defaultValue' => '', 'type' => '', 'options' => array(), 'enumName' => array('id' => '', 'value' => '')); if (isset($filters[$filterId])) { $filter = $filters[$filterId]; $filterData = array('id' => $filter->id, 'name' => $filter->name, 'defaultValue' => $filter->defaultValue, 'type' => $filter->type, 'options' => $filter->options, 'enumName' => $filter->enumName); } $this->view->filterData = $filterData; $this->render('edit-filter'); }