Class: Report::PresenceReport::PresenceCommand

Inherits:
BaseCommand
  • Object
show all
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

Instance Method Details

#date_rangeObject



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_weekObject



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

#executeObject



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_selectObject



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_selectObject



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