Files
codeocean/app/models/request_for_comment.rb
Ralf Teusner 223df2ffa8 some cleanup of request for comments. Work in progress.
Noticed a flaw when fetching the last submission, which is caused by timezone differences. First step to solve this.
Existing Request for Comments still need to be updated with their current submissionId, the SQL to do that is not yet finished.
2016-07-04 17:44:22 +02:00

70 lines
2.2 KiB
Ruby

class RequestForComment < ActiveRecord::Base
include Creation
belongs_to :exercise
belongs_to :file, class_name: 'CodeOcean::File'
before_create :set_requested_timestamp
def self.last_per_user(n = 5)
from("(#{row_number_user_sql}) as request_for_comments").where("row_number <= ?", n)
end
def set_requested_timestamp
self.requested_at = Time.now
end
def submission
Submission.find(file.context_id)
end
def last_submission
Submission.find_by_sql(" select * from submissions
where exercise_id = #{exercise_id} AND
user_id = #{user_id}
order by created_at desc
limit 1").first
end
def last_submission_before_creation
submission1 = Submission.find_by_sql(" select * from submissions
where exercise_id = #{exercise_id} AND
user_id = #{user_id} AND
'#{created_at.localtime}' > created_at
order by created_at desc
limit 1").first
submission2 = Submission.find_by_sql(" select * from submissions
where exercise_id = #{exercise_id} AND
user_id = #{user_id} AND
'#{created_at}' > created_at
order by created_at desc
limit 1").first
submission3 = Submission.find_by_sql(" select * from submissions
where exercise_id = #{exercise_id} AND
user_id = #{user_id} AND
'#{created_at.strftime('%Y-%m-%d %H:%M:%S.%N')}' > created_at
order by created_at desc
limit 1").first
submission4 = Submission.find_by_sql(" select * from submissions
where exercise_id = #{exercise_id} AND
user_id = #{user_id} AND
'#{created_at.localtime.strftime('%Y-%m-%d %H:%M:%S.%N')}' > created_at
order by created_at desc
limit 1").first
binding.pry
submission1
end
def comments_count
submission.files.map { |file| file.comments.size}.sum
end
def to_s
"RFC-" + self.id.to_s
end
private
def self.row_number_user_sql
select("id, user_id, exercise_id, file_id, question, requested_at, created_at, updated_at, user_type, solved, row_number() OVER (PARTITION BY user_id ORDER BY created_at DESC) as row_number").to_sql
end
end