2013-02-28 11:39:42 +08:00
|
|
|
require_dependency 'report'
|
|
|
|
|
|
|
|
class Admin::ReportsController < Admin::AdminController
|
|
|
|
|
|
|
|
def show
|
|
|
|
report_type = params[:type]
|
|
|
|
|
2015-05-07 09:00:51 +08:00
|
|
|
raise Discourse::NotFound unless report_type =~ /^[a-z0-9\_]+$/
|
2013-02-28 11:39:42 +08:00
|
|
|
|
2018-05-03 21:41:41 +08:00
|
|
|
start_date = (params[:start_date].present? ? params[:start_date].to_date : 30.days.ago).beginning_of_day
|
|
|
|
end_date = (params[:end_date].present? ? params[:end_date].to_date : start_date + 30.days).end_of_day
|
2017-04-13 17:10:55 +08:00
|
|
|
|
2016-02-03 10:29:51 +08:00
|
|
|
if params.has_key?(:category_id) && params[:category_id].to_i > 0
|
|
|
|
category_id = params[:category_id].to_i
|
|
|
|
else
|
|
|
|
category_id = nil
|
2015-06-24 21:19:39 +08:00
|
|
|
end
|
|
|
|
|
2016-02-03 10:29:51 +08:00
|
|
|
if params.has_key?(:group_id) && params[:group_id].to_i > 0
|
|
|
|
group_id = params[:group_id].to_i
|
|
|
|
else
|
|
|
|
group_id = nil
|
|
|
|
end
|
|
|
|
|
2018-05-11 11:30:21 +08:00
|
|
|
facets = nil
|
|
|
|
if Array === params[:facets]
|
|
|
|
facets = params[:facets].map { |s| s.to_s.to_sym }
|
|
|
|
end
|
|
|
|
|
2018-05-15 13:08:23 +08:00
|
|
|
limit = nil
|
|
|
|
if params.has_key?(:limit) && params[:limit].to_i > 0
|
|
|
|
limit = params[:limit].to_i
|
|
|
|
end
|
|
|
|
|
2018-05-16 14:05:03 +08:00
|
|
|
args = {
|
|
|
|
start_date: start_date,
|
|
|
|
end_date: end_date,
|
|
|
|
category_id: category_id,
|
|
|
|
group_id: group_id,
|
|
|
|
facets: facets,
|
|
|
|
limit: limit
|
|
|
|
}
|
|
|
|
|
|
|
|
report = nil
|
|
|
|
if (params[:cache])
|
|
|
|
report = Report.find_cached(report_type, args)
|
|
|
|
end
|
|
|
|
|
|
|
|
if report
|
|
|
|
return render_json_dump(report: report)
|
|
|
|
end
|
|
|
|
|
|
|
|
hijack do
|
|
|
|
report = Report.find(report_type, args)
|
|
|
|
|
|
|
|
raise Discourse::NotFound if report.blank?
|
|
|
|
|
|
|
|
if (params[:cache])
|
|
|
|
Report.cache(report, 35.minutes)
|
|
|
|
end
|
|
|
|
|
|
|
|
render_json_dump(report: report)
|
|
|
|
end
|
|
|
|
|
2013-02-28 11:39:42 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
end
|