Class: Report::PresenceReport::PresenceCommand
- Inherits:
-
BaseCommand
- Object
- BaseCommand
- Report::PresenceReport::PresenceCommand
- Defined in:
- app/services/report/presence_report/presence_command.rb
Overview
Command pattern to encapsulate parameters necessary to run a presence report
Instance Method Summary collapse
- #date_range ⇒ Object
- #date_ranges_per_week ⇒ Object
- #execute ⇒ Object
- #track_mode_collection_for_select ⇒ Object
- #tracked_presence_collection_for_select ⇒ Object
- #week_collection_for_select(start_range = nil, end_range = nil) ⇒ Object
Instance Method Details
#date_range ⇒ Object
27 28 29 |
# File 'app/services/report/presence_report/presence_command.rb', line 27 def date_range period1_gteq..period1_lteq end |
#date_ranges_per_week ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'app/services/report/presence_report/presence_command.rb', line 31 def date_ranges_per_week date_ranges = []; num_rows = (date_range.count / 7).to_i (0..num_rows).each do |i| if i == 0 start_date = period1_gteq.to_date + (i * 7) else start_date = (period1_gteq.to_date + (i * 7)).beginning_of_week end end_date = start_date.to_date.end_of_week if end_date >= period1_lteq end_date = period1_lteq end date_ranges[i] = [start_date, end_date] end return date_ranges end |
#execute ⇒ Object
51 52 53 54 |
# File 'app/services/report/presence_report/presence_command.rb', line 51 def execute return unless valid? @results = Report::PresenceReport::Presence.report(attributes) end |
#track_mode_collection_for_select ⇒ Object
23 24 25 |
# File 'app/services/report/presence_report/presence_command.rb', line 23 def track_mode_collection_for_select [['First Time', 'first'], ['Last Time', 'last']] end |
#tracked_presence_collection_for_select ⇒ Object
19 20 21 |
# File 'app/services/report/presence_report/presence_command.rb', line 19 def tracked_presence_collection_for_select %i(available away dnd).map { |s| [s.to_s.humanize, s] } end |
#week_collection_for_select(start_range = nil, end_range = nil) ⇒ Object
13 14 15 16 17 |
# File 'app/services/report/presence_report/presence_command.rb', line 13 def week_collection_for_select(start_range = nil, end_range = nil) start_range ||= 3.months.ago.to_date end_range ||= Date.current (start_range..end_range).map(&:beginning_of_week).uniq.reverse end |