discourse/app/controllers/admin/reports_controller.rb
Guo Xiang Tan a818fa9831 FIX: Show stats of the last 30 days be default for admin reports.
* `1.month.ago + 1.month` uses the calendar month for calculations
  such that `1.month.ago` from the 30th of March 2017 will give
  us the 28th of February 2017. Adding one month ahead from
  28th February 2017 will be 28th of March 2017.
2017-03-30 09:48:10 +08:00

33 lines
921 B
Ruby

require_dependency 'report'
class Admin::ReportsController < Admin::AdminController
def show
report_type = params[:type]
raise Discourse::NotFound unless report_type =~ /^[a-z0-9\_]+$/
start_date = params[:start_date].present? ? Time.parse(params[:start_date]) : 30.days.ago
end_date = params[:end_date].present? ? Time.parse(params[:end_date]) : start_date + 30.days
if params.has_key?(:category_id) && params[:category_id].to_i > 0
category_id = params[:category_id].to_i
else
category_id = nil
end
if params.has_key?(:group_id) && params[:group_id].to_i > 0
group_id = params[:group_id].to_i
else
group_id = nil
end
report = Report.find(report_type, start_date: start_date, end_date: end_date, category_id: category_id, group_id: group_id)
raise Discourse::NotFound if report.blank?
render_json_dump(report: report)
end
end