added annotation based exporter (#1831)

* added user exporter
* added project exporter
* added customer exporter
* added activity exporter
This commit is contained in:
Kevin Papst
2020-07-21 03:37:51 +02:00
committed by GitHub
parent 93a23f3fa3
commit aee063bb3c
79 changed files with 2980 additions and 215 deletions

View File

@@ -12,6 +12,9 @@ namespace App\Controller;
use App\Configuration\FormConfiguration;
use App\Entity\User;
use App\Event\UserPreferenceDisplayEvent;
use App\Export\Spreadsheet\UserExporter;
use App\Export\Spreadsheet\Writer\BinaryFileResponseWriter;
use App\Export\Spreadsheet\Writer\XlsxWriter;
use App\Form\Toolbar\UserToolbarForm;
use App\Form\UserCreateType;
use App\Repository\Query\UserQuery;
@@ -65,7 +68,6 @@ final class UserController extends AbstractController
/**
* @Route(path="/", defaults={"page": 1}, name="admin_user", methods={"GET"})
* @Route(path="/page/{page}", requirements={"page": "[1-9]\d*"}, name="admin_user_paginated", methods={"GET"})
* @Security("is_granted('view_user')")
*/
public function indexAction($page, Request $request): Response
{
@@ -191,6 +193,34 @@ final class UserController extends AbstractController
);
}
/**
* @Route(path="/export", name="user_export", methods={"GET"})
* @Security("is_granted('view_user')")
*/
public function exportAction(Request $request, UserExporter $exporter)
{
$query = new UserQuery();
$query->setCurrentUser($this->getUser());
$form = $this->getToolbarForm($query);
$form->setData($query);
$form->submit($request->query->all(), false);
if (!$form->isValid()) {
$query->resetByFormError($form->getErrors());
}
$entries = $this->getRepository()->getUsersForQuery($query);
$spreadsheet = $exporter->export(
$entries,
new UserPreferenceDisplayEvent(UserPreferenceDisplayEvent::EXPORT)
);
$writer = new BinaryFileResponseWriter(new XlsxWriter(), 'kimai-users');
return $writer->getFileResponse($spreadsheet);
}
protected function getToolbarForm(UserQuery $query): FormInterface
{
return $this->createForm(UserToolbarForm::class, $query, [