function get_compensation_output(companyId,include,compare,round,general_graphcode,filters,criteria): { # 1. Extract Data panel_data = loadDataFromDatabase(compagny.id, compangy.include, filters) compagny_data = panel_data[panel_data[compagny.id==companyId]] # 2. Get datasets for comparison compared_data = buildComparisonDatasets(compare, panel_data, compagny_data) # 3. For each criteria, calcul graphs of each criteria criteriaResults = [] for( criteria in response.criteria) if(criteria.best_matching = true) DF = bestmatching_DF() { result = null result = calcul_sheet_criteria(criteria,compared_data) result = result[result["number_employee_panel"] > result["number_employee_company"]] result = result[result["number_employee_panel"] > 1] result = function calcul_graphs_criteria criteriaResults.append(result) } # 4. Compute global-level graphs globalGraphs = [] if(response.graphs != null) for( graph in response.graphs) if(graph eq graph_gap_general) globalGraphs = calcul_graph_gap_general else if(graph eq general_internal_gap_fixed) globalGraphs = calcul_graph_general_internal_gap_fixed else ; # 5. Build final response return { "request": request, "response": { "criteria": criteriaResults, "graphs": globalGraphs } } } function loadDataFromDatabase(compagny.id, compangy.include, filters) function buildComparisonDatasets(rawData,compare) function calcul_sheet_criteria function create_best_match_df function get_compensation_graph_by_criteria function get_compensation_general_graph