module Helpscout::Mailbox::V2::Reports::Validate

Public Instance Methods

camel(value) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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 = {}) click to toggle source
# 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) click to toggle source
# File lib/helpscout/mailbox/v2/reports/validate.rb, line 20
def valid_date(date_range)
  date_range.each { |_k, v| Time.iso8601(v) }
end