public function generateReports(Reportable $reportable, GetReports $request, GeneralReportGeneratorService $generalReportGeneratorService, ExportPdfService $exportPdfService, ChromePdfService $chromePdfService, PrepareAppliedFilters $prepareAppliedFiltersService): Response|string 	{ 		$locale = $request->language ?? DomainLanguages::getDefaultLanguage(); 		$extraQuestions = $request->include_extra_questions;  		/** 		 * @var ClientSurvey|Survey $reportable 		 */ 		$survey = $reportable->loadAdditionalDataWithFilters($request);  		if (!$survey->isGeneratingReportPossible()) { 			throw new ReportGenerationException( 				(string) __('general-report-pdf.no-applicants', [], $locale), 				422 			); 		}  		$filterValues = $request->filter_values ?? [];  		$result = $generalReportGeneratorService->generate($survey, $locale, $filterValues, $extraQuestions);  		[$survey, 			$categories, 			$category_pages, 			$categories_with_avg_score, 			$categories_with_best_score, 			$questions_with_best_score, 			$categories_with_worst_score, 			$questions_with_worst_score, 			$array_of_applicants, 			$enps_score, 			$enps_percentage_data, 			$applicant_engagement_percentages, 			$headerLogoUrl] = $exportPdfService->exportBasicReportPdf($survey, $locale);  		$filterRawObject = new AppliedFiltersRawObject($request->locations, $request->departments, $request->filter_values);  		$preparedFilters = $prepareAppliedFiltersService->setFilter($filterRawObject)->setLocale($locale)->prepare();  		$isPreview = !$request->boolean('download');  		$view = view($survey->getViewFile(), compact('result', 'locale', 'survey', 'categories', 'category_pages', 'categories_with_avg_score', 'categories_with_best_score', 'questions_with_best_score', 'categories_with_worst_score', 'questions_with_worst_score', 'array_of_applicants', 'enps_score', 'enps_percentage_data', 'applicant_engagement_percentages', 'isPreview', 'preparedFilters', 'headerLogoUrl'));  		$userActivityService = new UserActivityService($request); 		$userActivityService->createCustomEntry($survey, UserActivityType::Read);  		if ($isPreview) { 			return $view->render(); 		}  		$data = $chromePdfService->generatePdf($view->render());  		$name = $survey->generateDownloadFileName($locale);  		return response()->make($data, 200, [ 			'Content-Type' => 'application/pdf', 			'Content-Disposition' => "attachment; filename=$name", 		]); 	}