32 lines
1.1 KiB
Ruby
32 lines
1.1 KiB
Ruby
module ConferencesHelper
|
|
def submissions_chart_data(conference)
|
|
submissions_by_day = conference.submissions_grouped_by_day
|
|
confirmed_by_day = conference.submissions_grouped_by_confirmation_day
|
|
start_date = conference.created_at.to_date
|
|
end_date = Time.zone.now.to_date < conference.start_date.to_date ? Time.zone.now.to_date : conference.start_date.to_date
|
|
|
|
chart_data = (start_date..end_date).map { |date|
|
|
{
|
|
created_at: date,
|
|
new_submissions: submissions_by_day[date].try(:first).try(:number) || 0,
|
|
new_confirmations: confirmed_by_day[date].try(:first).try(:number) || 0,
|
|
}
|
|
}
|
|
|
|
chart_data.each_with_index do |entry, index|
|
|
entry[:all_submissions] = if index == 0
|
|
entry[:new_submissions]
|
|
else
|
|
chart_data[index - 1][:all_submissions] + entry[:new_submissions]
|
|
end
|
|
|
|
entry[:all_confirmations] = if index == 0
|
|
entry[:new_confirmations]
|
|
else
|
|
chart_data[index - 1][:all_confirmations] + entry[:new_confirmations]
|
|
end
|
|
end
|
|
chart_data
|
|
end
|
|
end
|