mirror of
https://github.com/discourse/discourse.git
synced 2024-11-24 10:02:33 +08:00
a818fa9831
* `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.
33 lines
921 B
Ruby
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
|