/** * Returns all items matching the criterias for the report * * @param \ThinkopenAt\TimeFlies\Domain\Dto\ReportConfiguration $reportConfiguration * @param \ThinkopenAt\TimeFlies\Domain\Model\Category $category * @return \TYPO3\Flow\Persistence\QueryResultInterface All items as requested by the report configuration */ public function findForReport(ReportConfiguration $reportConfiguration, Category $category = NULL) { $query = $this->createQuery(); $constraints = array(); $orderings = array('category' => \TYPO3\Flow\Persistence\QueryInterface::ORDER_ASCENDING, 'begin' => \TYPO3\Flow\Persistence\QueryInterface::ORDER_ASCENDING); $query->setOrderings($orderings); // Set required categories if ($reportConfiguration->getIncludeSubcategories()) { $categoryIdentifiers = $this->categoryRepository->findAllIdentifiersRecursive($category); } else { $categoryIdentifiers = array($category->getIdentifier()); } $constraints[] = $query->in('category', $categoryIdentifiers); // Set required comment switch ($reportConfiguration->getCommentOperator()) { case 'dont_care': break; case 'contains': $constraints[] = $query->contains('comment', $reportConfiguration->getComment()); break; case 'not_contains': $constraints[] = $query->logicalNot($query->contains('comment', $reportConfiguration->getComment())); break; default: throw new \Exception('Invalid compare operator'); break; } // Set required begin/end $constraints[] = $query->greaterThanOrEqual('begin', $reportConfiguration->getBegin()); $constraints[] = $query->lessThanOrEqual('begin', $reportConfiguration->getEnd()); $query->matching($query->logicalAnd($constraints)); return $query->execute(); }
/** * @param \ThinkopenAt\TimeFlies\Domain\Dto\ReportConfiguration $reportConfiguration * @param \ThinkopenAt\TimeFlies\Domain\Model\Category $category * @return void */ public function generateReportAction(ReportConfiguration $reportConfiguration, Category $category = NULL) { if (!$this->view instanceof \ThinkopenAt\TimeFlies\View\ReportInterface) { throw new \Exception('No valid report format selected'); } $reportConfiguration->setBeginFromParts(); $reportConfiguration->setEndFromParts(); $items = $this->itemRepository->findForReport($reportConfiguration, $category); $this->view->assign('value', $items); $this->view->assign('category', $category); $this->view->assign('reportConfiguration', $reportConfiguration); }
/** * @param \ThinkopenAt\TimeFlies\Domain\Dto\ReportConfiguration $reportConfiguration * @param \ThinkopenAt\TimeFlies\Domain\Model\Category $category * @return void */ public function generateReportAction(ReportConfiguration $reportConfiguration, Category $category = NULL) { $reportConfiguration->setBeginFromParts(); $reportConfiguration->setEndFromParts(); $items = $this->itemRepository->findForReport($reportConfiguration, $category); $this->view->assign('value', $items); $this->view->setConfiguration(array('mapping' => array('value' => array('begin' => array('name' => 'begin'), 'end' => array('name' => 'end'), 'duration' => array('name' => 'duration'), 'category' => array('name' => 'category', 'subProperty' => array('name' => 'name')), 'comment' => array('name' => 'comment'))), 'outputHeaders' => TRUE)); }