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

@@ -14,10 +14,12 @@ use App\Entity\Customer;
use App\Entity\CustomerComment;
use App\Entity\CustomerRate;
use App\Entity\MetaTableTypeInterface;
use App\Entity\Rate;
use App\Entity\Team;
use App\Event\CustomerMetaDefinitionEvent;
use App\Event\CustomerMetaDisplayEvent;
use App\Export\Spreadsheet\EntityWithMetaFieldsExporter;
use App\Export\Spreadsheet\Writer\BinaryFileResponseWriter;
use App\Export\Spreadsheet\Writer\XlsxWriter;
use App\Form\CustomerCommentForm;
use App\Form\CustomerEditForm;
use App\Form\CustomerRateForm;
@@ -407,6 +409,34 @@ final class CustomerController extends AbstractController
]);
}
/**
* @Route(path="/export", name="customer_export", methods={"GET"})
*/
public function exportAction(Request $request, EntityWithMetaFieldsExporter $exporter)
{
$query = new CustomerQuery();
$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->repository->getCustomersForQuery($query);
$spreadsheet = $exporter->export(
Customer::class,
$entries,
new CustomerMetaDisplayEvent($query, CustomerMetaDisplayEvent::EXPORT)
);
$writer = new BinaryFileResponseWriter(new XlsxWriter(), 'kimai-customers');
return $writer->getFileResponse($spreadsheet);
}
/**
* @param Customer $customer
* @param Request $request