class DifficultCustomer::MessageDisplay
Message
renderer
Public Class Methods
new(session, request, user_signed_in)
click to toggle source
# File lib/difficult_customer/message_display.rb, line 6 def initialize(session, request, user_signed_in) @session = session @request = request @user_signed_in = user_signed_in end
Public Instance Methods
message_to_render()
click to toggle source
# File lib/difficult_customer/message_display.rb, line 12 def message_to_render return if priorities_sorted.first.nil? priorities_sorted.first end
Private Instance Methods
after_sign_in_qualifies(message)
click to toggle source
# File lib/difficult_customer/message_display.rb, line 57 def after_sign_in_qualifies(message) return false unless message.params['frequency'] == 'after-sign-in' return false if @request.referer.nil? @request.referer.ends_with?('sign_in') && @user_signed_in end
cast_message(message_params)
click to toggle source
# File lib/difficult_customer/message_display.rb, line 64 def cast_message(message_params) Message.new(message_params['message']) end
config()
click to toggle source
# File lib/difficult_customer/message_display.rb, line 68 def config DifficultCustomer::Config.new.config end
date_in_range(message)
click to toggle source
# File lib/difficult_customer/message_display.rb, line 40 def date_in_range(message) start_date = message.params['start_date'] || '1970-01-01' end_date = message.params['end_date'] || '2100-01-01' (Date.parse(start_date)..Date.parse(end_date)).cover?(Time.zone.now) end
every_n_requests_qualifies(message)
click to toggle source
# File lib/difficult_customer/message_display.rb, line 50 def every_n_requests_qualifies(message) frequency = message.params['frequency'] return false if (frequency =~ /every-(\d+)-requests/).nil? (@session[:requests] % frequency.split('-')[1].to_i).zero? end
every_request_qualifies(message)
click to toggle source
# File lib/difficult_customer/message_display.rb, line 46 def every_request_qualifies(message) message.params['frequency'] == 'every-request' end
message_qualifies(message)
click to toggle source
# File lib/difficult_customer/message_display.rb, line 33 def message_qualifies(message) return false unless date_in_range(message) every_request_qualifies(message) || after_sign_in_qualifies(message) || every_n_requests_qualifies(message) end
priorities_sorted()
click to toggle source
# File lib/difficult_customer/message_display.rb, line 20 def priorities_sorted out = [] %w[high medium low].each do |priority| config['messages'].each do |message| message = cast_message(message) next unless message.params['priority'] == priority out.push(message) if message_qualifies(message) end end out end