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