54 lines
1.8 KiB
PHP
54 lines
1.8 KiB
PHP
<?php
|
|
|
|
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,
|
|
private readonly AdminAppTicketPdfService $ticketPdfService,
|
|
private readonly AdminAppTicketExcelService $ticketExcelService,
|
|
) {}
|
|
|
|
public function index(AdminAppTicketIndexRequest $request): AdminAppTicketCollection
|
|
{
|
|
$tenant = $request->user()->tenant()->firstOrFail();
|
|
|
|
return new AdminAppTicketCollection(
|
|
$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'),
|
|
);
|
|
}
|
|
}
|