executor->execute( $query, new QueryInputEmpty() ); return view('bo.employees.form', compact('importColumns')); } public function importSubmit(ImportRequest $request, ImportEmployees $action): RedirectResponse { $importResults = $this->executor->execute( $action, $request->toImportEmployeesInput() ); if ($importResults->insertedCount > 0) { $this->flashMessageService->info(trans(':count lines imported', [ 'count' => $importResults->insertedCount, ])); } if ($importResults->updatedCount > 0) { $this->flashMessageService->info(trans(':count lines updated', [ 'count' => $importResults->updatedCount, ])); } if (! empty($importResults->errors)) { foreach ($importResults->errors as $error) { $this->flashMessageService->error($error); } } if ($importResults->insertedCount === 0 && $importResults->updatedCount === 0 && empty($importResults->errors)) { $this->flashMessageService->info(trans('No lines imported or updated')); } return to_route('bo.settings.employees'); } public function downloadExampleFile(): StreamedResponse { $exampleFilePath = resource_path('assets/files/salaries-import.csv'); throw_unless( File::exists($exampleFilePath), \LogicException::class, "Missing file at '{$exampleFilePath}'" ); return Response::stream(function () use ($exampleFilePath): void { readfile($exampleFilePath); }, 200, [ 'Content-Type' => 'text/csv', 'Content-Disposition' => 'attachment; filename="salaries-import.csv"', ]); } }