module Merit::Models::SashConcern
Public Instance Methods
add_badge(badge_id, options = {})
click to toggle source
# File lib/merit/models/sash_concern.rb, line 11 def add_badge(badge_id, options = {}) if (course_id = options[:course_id]) bs = Merit::BadgesSash.new(badge_id: badge_id.to_i, course_id: course_id.to_i) else bs = Merit::BadgesSash.new(badge_id: badge_id.to_i) end badges_sashes << bs bs end
add_points(num_points, options = {})
click to toggle source
# File lib/merit/models/sash_concern.rb, line 41 def add_points(num_points, options = {}) point = Merit::QalamScore::Point.new point.num_points = num_points point.course_id = options[:course_id].to_i scores .where(category: options[:category] || 'default') .first_or_create .score_points << point point end
badge_ids()
click to toggle source
# File lib/merit/models/sash_concern.rb, line 7 def badge_ids badges_sashes.map(&:badge_id) end
badges()
click to toggle source
# File lib/merit/models/sash_concern.rb, line 3 def badges badge_ids.map { |id| Merit::Badge.find id } end
points(options = {})
click to toggle source
Retrieve the number of points from a category By default all points are summed up @param category [String] The category @return [Integer] The number of points
# File lib/merit/models/sash_concern.rb, line 33 def points(options = {}) if (category = options[:category]) scores.where(category: category).first.try(:points) || 0 else scores.reduce(0) { |sum, score| sum + score.points } end end
rm_badge(badge_id, options = {})
click to toggle source
# File lib/merit/models/sash_concern.rb, line 21 def rm_badge(badge_id, options = {}) if (course_id = options[:course_id]) badges_sashes.where(badge_id: badge_id.to_i, course_id: course_id.to_i).first.try(:destroy) else badges_sashes.where(badge_id: badge_id.to_i).first.try(:destroy) end end
subtract_points(num_points, options = {})
click to toggle source
# File lib/merit/models/sash_concern.rb, line 52 def subtract_points(num_points, options = {}) add_points(-num_points, options) end
Private Instance Methods
create_scores()
click to toggle source
# File lib/merit/models/sash_concern.rb, line 58 def create_scores scores << Merit::QalamScore.create end