<?php declare(strict_types=1);
namespace Ew\GrecoAdministration\Controller\Api;
use Ew\GrecoAdministration\Service\Csv\CsvGenerator;
use Ew\GrecoAdministration\Service\GrecoAdministrationService;
use Shopware\Core\Framework\Context;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Ew\GrecoAdministration\Constants\Constants;
/**
* @Route(defaults={"_routeScope"={"administration"}})
*/
class GrecoAdministrationController extends AbstractController
{
private GrecoAdministrationService $grecoAdministrationService;
private CsvGenerator $csvGenerator;
public function __construct(
GrecoAdministrationService $grecoAdministrationService,
CsvGenerator $csvGenerator
)
{
$this->grecoAdministrationService = $grecoAdministrationService;
$this->csvGenerator = $csvGenerator;
}
/**
* @Route(defaults={"_routeScope"={"administration"}})
* @Route(path="/api/_action/grecoAdministration/generate/csv", methods={"POST"})
*/
public function csvGenerator(Request $request, Context $context): JsonResponse
{
$this->grecoAdministrationService->generateCsv($context);
return new JsonResponse([
'success' => true,
]);
}
/**
* @Route(defaults={"_routeScope"={"administration"}})
* @Route(path="/api/_action/grecoAdministration/generate/pdf", methods={"POST"})
*/
public function pdfGenerator(Request $request, Context $context): JsonResponse
{
$this->grecoAdministrationService->generatePdf($context);
return new JsonResponse([
'success' => true,
]);
}
/**
* @Route(defaults={"_routeScope"={"administration"}})
* @Route(path="/api/_action/grecoAdministration/download/file", methods={"GET"})
*/
public function getFile(Request $request, Context $context)
{
$fileExtension = $request->get('fileExtension');
$docFileName = $request->get('fileName');
$folder = $this->container->getParameter('kernel.project_dir') . '/public/';
$path = $folder . $docFileName . '.' . $fileExtension;
foreach (scandir($folder) as $filename) {
if ($filename == $docFileName . '_' . date('d-m-Y') . '.' . $fileExtension) {
$path = $folder . $filename;
}
}
if (file_exists($path)) {
return new BinaryFileResponse($path);
} else {
return new JsonResponse(null, 404);
}
}
/**
* @Route(defaults={"_routeScope"={"administration"}})
* @Route(path="/api/_action/grecoAdministration/orders/generate/csv", methods={"POST"})
* @throws \Exception
*/
public function generatCsv(Request $request, Context $context): JsonResponse
{
$filters = $request->get('filters');
$isInvoice = $request->get('isInvoice');
// $this->grecoAdministrationService->generateOrdersCsv($context, $filters);
$entity = $isInvoice ? Constants::CSV_ORDER_INVOICE['entity'] : Constants::CSV_ORDER_FINANCE['entity'];
$this->csvGenerator->generateCsv($entity, $context, $filters);
return new JsonResponse([
'success' => true,
]);
}
/**
* @Route(defaults={"_routeScope"={"administration"}})
* @Route(path="/api/_action/grecoAdministration/vouchers/generate/csv", methods={"POST"})
*/
public function vouchersCsvGenerator(Request $request, Context $context): JsonResponse
{
$filters = $request->get('filters');
$this->grecoAdministrationService->generateVouchersCsv($context, $filters);
return new JsonResponse([
'success' => true,
]);
}
}