gitlink-forgeplus/app/controllers/admins/projects_rank_controller.rb

77 lines
2.3 KiB
Ruby

class Admins::ProjectsRankController < Admins::BaseController
before_action :get_timeable_key_names, only:[:index]
def index
puts @names_array
unless @names_array.blank?
$redis_cache.zunionstore("admin-days-project-rank", @names_array)
deleted_data = $redis_cache.smembers("v2-project-rank-deleted")
$redis_cache.zrem("admin-days-project-rank", deleted_data) unless deleted_data.blank?
@date_rank = $redis_cache.zrevrange("admin-days-project-rank", 0, -1, withscores: true)
@date_rank = @date_rank.map do |i|
visits = 0
watchers = 0
praises = 0
forks = 0
issues = 0
pullrequests = 0
commits = 0
(begin_date..end_date).to_a.each do |d|
result = $redis_cache.hgetall("v2-project-statistic:#{i[0]}-#{d}")
visits += result["visits"].to_i
watchers += result["watchers"].to_i
praises += result["praises"].to_i
forks += result["forks"].to_i
issues += result["issues"].to_i
pullrequests += result["pullrequests"].to_i
commits += result["commits"].to_i
end
i + [visits,watchers,praises,forks,issues,pullrequests,commits]
end
case params[:sort_by]
when 'visits'
@date_rank = @date_rank.sort{|i| i[2]}
when 'watchers'
@date_rank = @date_rank.sort{|i| i[3]}
when 'praises'
@date_rank = @date_rank.sort{|i| i[4]}
when 'forks'
@date_rank = @date_rank.sort{|i| i[5]}
when 'issues'
@date_rank = @date_rank.sort{|i| i[6]}
when 'pullrequests'
@date_rank = @date_rank.sort{|i| i[7]}
when 'commits'
@date_rank = @date_rank.sort{|i| i[8]}
else
@date_rank = @date_rank.sort{|i| i[1]}
end
if params[:sort_direction].blank? || params[:sort_direction].to_s.downcase == "desc"
@date_rank = @date_rank.reverse
end
else
@date_rank = []
end
end
private
def begin_date
params.fetch(:begin_date, Date.today.to_s)
end
def end_date
params.fetch(:end_date, Date.today.to_s)
end
def get_timeable_key_names
begin
@names_array = []
(begin_date..end_date).to_a.each do |i|
@names_array << "v2-project-rank-#{i}"
end
rescue
@names_array = []
end
end
end