Module: Modules::Owners::Reports::DineInCoversReport

Included in:
Modules::Owners::Reports
Defined in:
app/my_lib/modules/owners/reports/dine_in_covers_report.rb

Instance Method Summary collapse

Instance Method Details

#build_reports_dine_in_covers_by_dayObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'app/my_lib/modules/owners/reports/dine_in_covers_report.rb', line 5

def build_reports_dine_in_covers_by_day
  reservations = active_reservations_filter_by('day')
  Rails.cache.fetch("#{self.class}:dine_in_covers_report_by:day:#{restaurants_cache_key}:#{reservations.cache_key}:#{I18n.locale}") do
    data = reservations.where(service_type: :dine_in)
                       .select("restaurant_id, party_size, COUNT('id') bookings")
                       .group('party_size')
    total_bookings = 0
    row_data = data.map do |row|
      total_bookings += row['bookings'].to_i
      {
        covers: row['party_size'],
        booking: row['bookings']
      }
    end.sort_by { |r| r[:covers] }

    [row_data, total_bookings]
  end
end