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 = loadDataFromDatabase(compagny.id) # 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) { 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 if(criteria.best_matching = true) result = bestmatching_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 bestmatching_criteria function calcul_graphs_criteria function calcul_graph_repartition_gap function calcul_graph_repartition_data_bf function calcul_graph_repartition_data_bt function calcul_graph_gap_general function calcul_graph_general_internal_gap_fixed