- def self.contenders_for_time_rep(user, rep, desired, cutoff)
- puts "=> Creating contenders..."
- time_bar = (cutoff == nil)? Time.now.to_i : cutoff.to_i
- time_diff = 60*60*24
- time_column = "activities.created_at"
- limit = desired * 24 if rep == 3 # otherwise nil
- contenders = UserActivity.relevant_to(user)
- puts "=====\n=> #{UserActivity.relevant_to(user).to_sql}"
- puts "=> [#{UserActivity.relevant_to(user).count}]contenders = #{UserActivity.relevant_to(user).class}"
- #contenders = contenders.where("#{time_column} < ?", Time.at(cutoff.to_i)) if cutoff != nil
- conditions = ["activities.created_at < ?", Time.at(time_bar)]
- =begin
- =end
- puts "=> Conditions:\n-> #{conditions}"
- puts "-> #{Hide.hidden_for_sql(user.id)}"
- contenders = contenders.where(Hide.hidden_for_sql(user.id))\
- .where(conditions)\
- .order("#{time_column} desc").limit(desired)
- puts "=> After applying conditions: #{contenders.count}"
- contenders.where(Hide.hidden_for_sql(user.id))\
- .order("#{time_column} desc").limit(limit).all
- end
- def self.time(user, desired=8, before=nil)
- logger.info "Getting time"
- contenders = contenders_for_time_rep(user, 1, desired*2, before)
- show = []
- reps = 0
- while show.length < desired and reps < 5 do
- # contenders = contenders_for_time_rep(user, reps, desired*2, before)
- contenders.each do |c|
- next if reps<3 && c.user_id == user.id
- show << c
- break if show.length >= desired
- end
- reps += 1
- break if show.length >= desired
- end
- puts "========================="
- puts "=> Show: #{(show.map {|a| a.created_at}).inspect}"
- puts "=> Show: #{(show.map {|a| a.id}).inspect}"
- puts "========================="
- UserActivity.get_needed_models_for_display_by_id show.map {|a| a.id}
- end