public function generate(Reportable $survey, string $locale, array $extras = []): BaReportDataObject 	{ 		/** 		 * @var \Illuminate\Database\Eloquent\Collection $applicants 		 */ 		$applicants = $survey->getApplicants(); 		$applicantsIds = $applicants->pluck('id')->all();  		$this->setSurveys($applicants, $locale);  		$basicQuestions = $this->basicQuestions->calculate($survey, $applicantsIds, $locale, []); 		$this->baReportDataObject->setBasicQuestions($basicQuestions);  		$extraQuestions = $this->extraQuestions->calculate($survey, $applicantsIds, $locale, []); 		$this->baReportDataObject->setExtraQuestions($extraQuestions);  		$calculatedEnps = $this->enpsService->calculatePercentageDataForEnpsGradeCalculation($survey);  		$this->baReportDataObject->setEnps( 			new EnpsDataObject( 				(int) $calculatedEnps['promotorsPercentage'], 				(int) $calculatedEnps['passivesPercentage'], 				(int) $calculatedEnps['criticsPercentage'] 			) 		);  		$this->setUpEnpsCountByAnswerValue($survey, $applicants); 		$this->setUpEnpsGrade((int) $calculatedEnps['promotorsPercentage'], (int) $calculatedEnps['criticsPercentage']);  		$this->setUpDemographicQuestionsByEnpsGroups($survey, $applicants, $locale);  		$this->setCompanyPositivityQuestion($applicants, $locale);  		$this->setUpApplicantPositivityInRegardsToCompanyView($locale);  		$exportBaPublicReportService = new ExportBaPublicReportService($this->baSurvey, $locale);  		$this->setUpApplicantPerceptionQuestionGroups($survey, $applicants, $exportBaPublicReportService);  		$this->setUpDemographicQuestionsData($applicants, $locale);  		$applicants->load('parent.answers.question');  		$this->setUpBestAndWorstOverallGradedQuestionsByGender($applicants, $locale);  		$this->setPercentageOfApplicantsWithoutSufficientData();  		return $this->baReportDataObject; 	}