Files
project-work/worker-toolkit-flaredown/repo/backend/app/models/promotion_rate.rb

67 lines
1.4 KiB
Ruby

class PromotionRate
include Mongoid::Document
include Mongoid::Timestamps
MIN_SCORE_FOR_REVIWS = 8
field :date, type: Date
field :score, type: Integer
field :feedback, type: String
field :encrypted_user_id, type: String, encrypted: {type: :integer}
field :user_created_at, type: Date
belongs_to :checkin, index: true
index(date: 1, encrypted_user_id: 1)
validates :checkin, presence: true
validates :checkin_id, uniqueness: true
before_create :set_date_and_user_id
# '17-09-2017'
def self.group_by_score_and_date(start_str, end_str)
start_day = start_str.to_date
end_day = end_str.to_date
PromotionRate.collection.aggregate(
[
{"$match": {
date: {
"$gte": start_day,
"$lte": end_day
}
}},
"$group": {_id: "$score", count: {"$sum": 1}}
]
)
end
# '17-09-2017'
def self.filter_low_scores_by_date(start_str, end_str)
start_day = start_str.to_date
end_day = end_str.to_date
PromotionRate.collection.aggregate(
[
{"$match": {
score: {
"$lte": MIN_SCORE_FOR_REVIWS
},
date: {
"$gte": start_day,
"$lte": end_day
}
}}
]
)
end
protected
def set_date_and_user_id
self.date = checkin.date
self.encrypted_user_id = checkin.encrypted_user_id
end
end