diff options
Diffstat (limited to 'app/services/tartiflette_scoring_service.rb')
-rw-r--r-- | app/services/tartiflette_scoring_service.rb | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/app/services/tartiflette_scoring_service.rb b/app/services/tartiflette_scoring_service.rb index 3514eb1..2c12025 100644 --- a/app/services/tartiflette_scoring_service.rb +++ b/app/services/tartiflette_scoring_service.rb @@ -1,24 +1,35 @@ class TartifletteScoringService def self.scored?(tartiflette, session) + session[:scored_tartiflettes] ||= [] session[:scored_tartiflettes]&.include?(tartiflette.id) end def self.mark_as_scored(tartiflette, session) session[:scored_tartiflettes] ||= [] - unless scored?(tartiflette, session) - session[:scored_tartiflettes] << tartiflette.id - end + session[:scored_tartiflettes] << tartiflette.id unless scored?(tartiflette, session) end def self.submit_scores(tartiflette, scores, session) - scores.each do |criterium_id, value| + scores.each do |criterium_id, score_params| Score.create!( + session_id: session.id, tartiflette: tartiflette, scoring_criterium_id: criterium_id, - value: value[:value] + value: score_params[:value] ) end mark_as_scored(tartiflette, session) + rescue ActiveRecord::RecordInvalid => e + raise StandardError, "Failed to create score: #{e.message}" + end + + def self.update_scores(tartiflette, scores, session) + scores.each do |score_id, score_params| + score = tartiflette.scores.find(score_id) + score.update!(value: score_params[:value]) + end + rescue ActiveRecord::RecordInvalid => e + raise StandardError, "Failed to update score: #{e.message}" end def self.average_score(tartiflette) |