From f7e3979e79821fc4e232e12923ff47f90d742173 Mon Sep 17 00:00:00 2001 From: kiragrammel Date: Fri, 13 Oct 2023 14:16:44 +0200 Subject: [PATCH] Set bonus points for survey via LTI parameter --- app/controllers/sessions_controller.rb | 18 ++++++++++-------- app/models/event.rb | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index fc84aaab..b701072f 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -76,14 +76,16 @@ class SessionsController < ApplicationController private def redirect_to_survey - # The following code is taken from store_lti_session_data(params) & send_score_for(submission, user) - # It gives a bonus point to users who opened the survey - begin - lti_parameters = params.slice(*Lti::SESSION_PARAMETERS).permit!.to_h - provider = build_tool_provider(consumer: current_user.consumer, parameters: lti_parameters) - provider.post_replace_result!(1.0) - rescue IMS::LTI::XMLParseError, Net::OpenTimeout, Net::ReadTimeout, Errno::ECONNRESET, SocketError, EOFError - # We don't do anything here because it is only a bonus point and we want the users to do the survey + if params[:custom_bonus_points] + # The following code is taken from store_lti_session_data(params) & send_score_for(submission, user) + # It gives a bonus point to users who opened the survey + begin + lti_parameters = params.slice(*Lti::SESSION_PARAMETERS).permit!.to_h + provider = build_tool_provider(consumer: current_user.consumer, parameters: lti_parameters) + provider.post_replace_result!(1.0) + rescue IMS::LTI::XMLParseError, Net::OpenTimeout, Net::ReadTimeout, Errno::ECONNRESET, SocketError, EOFError + # We don't do anything here because it is only a bonus point and we want the users to do the survey + end end # This method is taken from Xikolo and slightly adapted. diff --git a/app/models/event.rb b/app/models/event.rb index ef208e0d..23d93bf2 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -9,7 +9,7 @@ class Event < ApplicationRecord validates :category, presence: true - # We temporary allow an event to be stored without data. + # We allow an event to be stored without data for pair programming (pp). # This is useful if the category (together with the user and exercise) is already enough. validates :data, presence: true, if: -> { %w[pp_start_chat pp_invalid_partners pp_work_alone].exclude?(category) }