public function generate(ClientSurvey $client_survey, GetBenchmarkReport $request): CategoriesDataObject 	{ 		$benchmarkReportService = new BenchmarkReportService; 		$categoriesDataObject = new CategoriesDataObject; 		$employeeSatisfactionService = new BenchmarkEmployeeSatisfactionService; 		$locale = $request->benchmark_language ?? DomainLanguages::getDefaultLanguage();  		// get general data ,title & avg category score (Tvrtka)(current Survey) 		$categories_general_data = $benchmarkReportService->calculateClientSurveyFinalGrade($client_survey, $locale); 		$categoriesDataObject->setCategoriesData($categories_general_data);  		// get all comparable client surveys with data(categoris,questions,answers) for survey_id(same year) & company size, group avg score by category 		$client_surveys = $this->getComparableClientSurveysWithDataFilterByCompanySize($client_survey);  		// get categories scores by company size & year , (Kategorija) 		$avg_categories_score = $this->getAverageCategoriesScoreByCompanySize($client_surveys, $locale); 		$categories_data = $this->updateCategoriesData($categoriesDataObject->getCategoriesData(), $avg_categories_score, 'avg_category_score'); 		$categoriesDataObject->setCategoriesData($categories_data);  		// get categories scores by company size & year & top 3 'avg_score' surveys , (Top 3) 		$avg_categories_score = $this->getAverageCategoriesScoreByCompanySize($client_surveys, $locale, true); 		$categories_data = $this->updateCategoriesData($categoriesDataObject->getCategoriesData(), $avg_categories_score, 'avg_category_score_by_top_three_surveys'); 		$categoriesDataObject->setCategoriesData($categories_data);  		// get all comparable client surveys with data(categoris,questions,answers) for survey_id(same year) & all company sizes, group avg score by category 		$client_surveys = $this->getComparableClientSurveysWithDataFilterByCompanySize($client_survey, true);  		$avg_categories_score = $this->getAverageCategoriesScoreByCompanySize($client_surveys, $locale); 		$categories_data = $this->updateCategoriesData($categoriesDataObject->getCategoriesData(), $avg_categories_score, 'avg_category_score_all_participants'); 		$categoriesDataObject->setCategoriesData($categories_data);  		$client_industries = $employeeSatisfactionService->getClientsWithIndustryIds($client_survey);  		$client_surveys_basic_industries_data = $this->getAverageCategoriesScoreByBasicIndustry($client_surveys, $client_industries, $client_survey, $locale); 		$categories_data = $this->updateCategoriesData($categoriesDataObject->getCategoriesData(), $client_surveys_basic_industries_data, 'basic_industry_scores'); 		$categoriesDataObject->setCategoriesData($categories_data);  		$client_surveys_specific_industries_data = $this->getAverageCategoriesScoreBySpecificIndustry($client_surveys, $client_industries, $client_survey, $locale); 		$categories_data = $this->updateCategoriesData($categoriesDataObject->getCategoriesData(), $client_surveys_specific_industries_data, 'specific_industry_scores'); 		$categoriesDataObject->setCategoriesData($categories_data);  		return $categoriesDataObject; 	}