diff --git a/app/controllers/external_users_controller.rb b/app/controllers/external_users_controller.rb index bc61ad07..98cffa68 100644 --- a/app/controllers/external_users_controller.rb +++ b/app/controllers/external_users_controller.rb @@ -23,13 +23,13 @@ class ExternalUsersController < ApplicationController def working_time_query(tag = nil) " - SELECT user_id, + SELECT contributor_id, bar.exercise_id, max(score) as maximum_score, count(bar.id) as runs, sum(working_time_new) AS working_time FROM - (SELECT user_id, + (SELECT contributor_id, exercise_id, score, id, @@ -38,23 +38,23 @@ class ExternalUsersController < ApplicationController ELSE working_time END AS working_time_new FROM - (SELECT user_id, + (SELECT contributor_id, exercise_id, max(score) AS score, id, - (created_at - lag(created_at) over (PARTITION BY user_id, exercise_id + (created_at - lag(created_at) over (PARTITION BY contributor_id, exercise_id ORDER BY created_at)) AS working_time FROM submissions - WHERE #{ExternalUser.sanitize_sql(['user_id = ?', @user.id])} - AND user_type = 'ExternalUser' + WHERE #{ExternalUser.sanitize_sql(['contributor_id = ?', @user.id])} + AND contributor_type = 'ExternalUser' #{current_user.admin? ? '' : "AND #{ExternalUser.sanitize_sql(['study_group_id IN (?)', current_user.study_groups.pluck(:id)])} AND cause = 'submit'"} GROUP BY exercise_id, - user_id, + contributor_id, id ) AS foo ) AS bar #{tag.nil? ? '' : " JOIN exercise_tags et ON et.exercise_id = bar.exercise_id AND #{ExternalUser.sanitize_sql(['et.tag_id = ?', tag])}"} - GROUP BY user_id, + GROUP BY contributor_id, bar.exercise_id; " end diff --git a/app/views/external_users/statistics.html.slim b/app/views/external_users/statistics.html.slim index 38f32252..fbcd86a0 100644 --- a/app/views/external_users/statistics.html.slim +++ b/app/views/external_users/statistics.html.slim @@ -1,6 +1,6 @@ h1 = t('.title') -- submissions = Submission.where(user: @user).in_study_group_of(current_user) +- submissions = Submission.where(contributor: @user).in_study_group_of(current_user) - exercises = Exercise.where(id: submissions.joins(:exercise).group(:exercise_id).select(:exercise_id).distinct).reject(&:nil?) - if submissions.any? && !policy(exercises.first).detailed_statistics? - submissions = submissions.final @@ -36,4 +36,4 @@ h1 = t('.title') td = stats["runs"] or 0 if policy(exercises.first).detailed_statistics? td = stats["working_time"] or 0 if policy(exercises.first).detailed_statistics? - else - = t('exercises.external_users.statistics.no_data_available') \ No newline at end of file + = t('exercises.external_users.statistics.no_data_available')