Module: Helpscout::Mailbox::V2::Reports::Validate
- Included in:
- Client
- Defined in:
- lib/helpscout/mailbox/v2/reports/validate.rb
Instance Method Summary collapse
- #camel(value) ⇒ Object
- #check_dates(start_date, end_date, previous_start_date = nil, previous_end_date = nil) ⇒ Object
- #date_range(date_range, include_previous = false) ⇒ Object
- #date_range_overlap(date_range) ⇒ Object
- #format(args = {}) ⇒ Object
- #valid_date(date_range) ⇒ Object
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 |