feat(tickets): add PDF and Excel export endpoints

This commit is contained in:
2026-08-31 12:03:25 -03:00
parent 457eba68a9
commit 5250d1a818
9 changed files with 575 additions and 1 deletions

View File

@@ -2,14 +2,23 @@
namespace App\Domains\Ticket\Controllers\AdminApp;
use App\Domains\Ticket\Requests\AdminAppTicketExportRequest;
use App\Domains\Ticket\Requests\AdminAppTicketIndexRequest;
use App\Domains\Ticket\Resources\AdminApp\AdminAppTicketCollection;
use App\Domains\Ticket\Services\AdminAppTicketExcelService;
use App\Domains\Ticket\Services\AdminAppTicketPdfService;
use App\Domains\Ticket\Services\AdminAppTicketService;
use App\Http\Controllers\Controller;
use Illuminate\Http\Response;
use Symfony\Component\HttpFoundation\StreamedResponse;
class TicketController extends Controller
{
public function __construct(private readonly AdminAppTicketService $ticketService) {}
public function __construct(
private readonly AdminAppTicketService $ticketService,
private readonly AdminAppTicketPdfService $ticketPdfService,
private readonly AdminAppTicketExcelService $ticketExcelService,
) {}
public function index(AdminAppTicketIndexRequest $request): AdminAppTicketCollection
{
@@ -19,4 +28,26 @@ class TicketController extends Controller
$this->ticketService->search($tenant, $request->validated())
);
}
public function downloadPdf(AdminAppTicketExportRequest $request): Response
{
$tenant = $request->user()->tenant()->firstOrFail();
return $this->ticketPdfService->download(
$tenant,
$this->ticketService->ticketsForExport($tenant, $request->validated()),
$request->validated('timezone'),
);
}
public function downloadExcel(AdminAppTicketExportRequest $request): StreamedResponse
{
$tenant = $request->user()->tenant()->firstOrFail();
return $this->ticketExcelService->download(
$tenant,
$this->ticketService->ticketsForExport($tenant, $request->validated()),
$request->validated('timezone'),
);
}
}