Module: Helpscout::Mailbox::V2::Reports::Validate

Included in:
Client
Defined in:
lib/helpscout/mailbox/v2/reports/validate.rb

Instance Method Summary collapse

Instance Method Details

#camel(value) ⇒ Object



10
11
12
# File 'lib/helpscout/mailbox/v2/reports/validate.rb', line 10

def camel(value)
  value.to_s.split('_').inject { |m, p| m + p.capitalize }
end

#check_dates(start_date, end_date, previous_start_date = nil, previous_end_date = nil) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/helpscout/mailbox/v2/reports/validate.rb', line 48

def check_dates(start_date, end_date, previous_start_date = nil, previous_end_date = nil)
  if previous_start_date.nil? && previous_end_date.nil?
    date_range = { start: start_date, end: end_date }
    valid_date(date_range)
    date_range(date_range)
    return date_range
  end

  date_range = { start: start_date, end: end_date, previous_start: previous_start_date, previous_end: previous_end_date }
  valid_date(date_range)
  date_range(date_range, true)
  date_range
end

#date_range(date_range, include_previous = false) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/helpscout/mailbox/v2/reports/validate.rb', line 28

def date_range(date_range, include_previous = false)
  if date_range[:start] > date_range[:end]
    raise 'end date must be after start date'
  end

  return unless include_previous

  if date_range[:previous_start] > date_range[:previous_end]
    raise 'prev end date must be after previous start date'
  end

  if date_range[:end] < date_range[:previous_start]
    raise 'end date must be after previous start date'
  end

  if date_range_overlap(date_range)
    raise 'the date range has overlapping dates'
  end
end

#date_range_overlap(date_range) ⇒ Object



24
25
26
# File 'lib/helpscout/mailbox/v2/reports/validate.rb', line 24

def date_range_overlap(date_range)
  (date_range[:start]..date_range[:end]).overlaps?(date_range[:previous_start]..date_range[:previous_end])
end

#format(args = {}) ⇒ Object



14
15
16
17
18
# File 'lib/helpscout/mailbox/v2/reports/validate.rb', line 14

def format(args = {})
  res = {}
  args.each { |k, v| res[camel(k)] = v unless v.nil? }
  res
end

#valid_date(date_range) ⇒ Object



20
21
22
# File 'lib/helpscout/mailbox/v2/reports/validate.rb', line 20

def valid_date(date_range)
  date_range.each { |_k, v| Time.iso8601(v) }
end