diff --git a/app/models/restitution/evacob/score_module.rb b/app/models/restitution/evacob/score_module.rb index a83680623..ec17e5b17 100644 --- a/app/models/restitution/evacob/score_module.rb +++ b/app/models/restitution/evacob/score_module.rb @@ -83,23 +83,6 @@ def recupere_score_max(score_totaux) [question, NUMERATIE_METRIQUES[question]].max_by { |metrique| score_totaux[metrique] } end end - - def filtre_evenements_reponses(evenements) - evenements_par_module(evenements, :N1) - evenements_par_module(evenements, :N2) - evenements_par_module(evenements, :N3) - evenements - end - - def evenements_par_module(evenements, nom_module) - module_rattrapage = "#{nom_module}R" - a_fait_un_rattrapage = evenements.any? do |e| - e.donnees['question'].start_with?(module_rattrapage) - end - return evenements if a_fait_un_rattrapage - - evenements.reject! { |e| e.donnees['question'].start_with?(module_rattrapage) } - end end end end diff --git a/app/models/restitution/place_du_marche.rb b/app/models/restitution/place_du_marche.rb index 817d0d021..008e77b82 100644 --- a/app/models/restitution/place_du_marche.rb +++ b/app/models/restitution/place_du_marche.rb @@ -3,7 +3,7 @@ require_relative '../../decorators/evenement_place_du_marche' module Restitution - class PlaceDuMarche < Base + class PlaceDuMarche < Base # rubocop:disable Metrics/ClassLength SCORES_NIVEAUX = { N1: { 'type' => :nombre, @@ -49,11 +49,12 @@ def calcule_pourcentage_reussite_competence_clea SCORES_CLEA.each_key do |code| next unless evenements_groupes_cleas[code] + evenements = evenements_groupes_cleas[code].values.flatten + evenements = filtre_evenements_reponses(evenements) + SCORES_CLEA[code][:pourcentage_reussite] = Evacob::ScoreMetacompetence.new - .calcule_pourcentage_reussite( - evenements_groupes_cleas[code].values.flatten - ) + .calcule_pourcentage_reussite(evenements) end end @@ -124,5 +125,21 @@ def evenements_groupes_cleas @evenements.regroupe_par_codes_clea(questionnaire, %w[N1R N2R N3R]) end end + + def filtre_evenements_reponses(evenements) + evenements = evenements_par_module(evenements, :N1) + evenements = evenements_par_module(evenements, :N2) + evenements_par_module(evenements, :N3) + end + + def evenements_par_module(evenements, nom_module) + module_rattrapage = "#{nom_module}R" + a_fait_un_rattrapage = evenements.any? do |e| + e.donnees['question'].start_with?(module_rattrapage) && e.donnees['score'].present? + end + return evenements if a_fait_un_rattrapage + + evenements.reject { |e| e['question'].start_with?(module_rattrapage) } + end end end diff --git a/app/models/restitution/positionnement/export_numeratie.rb b/app/models/restitution/positionnement/export_numeratie.rb index e8cac14db..707b79460 100644 --- a/app/models/restitution/positionnement/export_numeratie.rb +++ b/app/models/restitution/positionnement/export_numeratie.rb @@ -100,15 +100,10 @@ def tri_par_ordre_croissant(groupes_clea) end.to_h end - def question_rattrapage(nom_technique) - nom_technique.start_with?('N1R', 'N2R', 'N3R') - end - def filtre_evenements_reponses(evenements) - evenements_par_module(evenements, :N1) - evenements_par_module(evenements, :N2) + evenements = evenements_par_module(evenements, :N1) + evenements = evenements_par_module(evenements, :N2) evenements_par_module(evenements, :N3) - evenements end def evenements_par_module(evenements, nom_module) @@ -118,7 +113,7 @@ def evenements_par_module(evenements, nom_module) end return evenements if a_fait_un_rattrapage - evenements.reject! { |e| e['question'].start_with?(module_rattrapage) } + evenements.reject { |e| e['question'].start_with?(module_rattrapage) } end def pourcentage_reussite(reponses)