user()->tenant()->firstOrFail(); return new AdminAppTicketCollection( $this->ticketService->search($tenant, $request->validated()) ); } public function cancel(Request $request, int $ticket): AdminAppTicketResource { $tenant = $request->user()->tenant()->firstOrFail(); return new AdminAppTicketResource($this->ticketService->cancel($tenant, $ticket)); } public function calculateRefund(Request $request, int $ticket): AdminAppTicketRefundCalculationResource { $tenant = $request->user()->tenant()->firstOrFail(); return new AdminAppTicketRefundCalculationResource( $this->ticketService->calculateRefund($tenant, $ticket) ); } public function refund(AdminAppTicketRefundRequest $request, int $ticket): AdminAppTicketResource { $tenant = $request->user()->tenant()->firstOrFail(); return new AdminAppTicketResource( $this->ticketService->refund( $tenant, $ticket, $request->validated('refund_type'), $request->user(), ) ); } 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'), ); } }