class Eventifier::Preferences

Attributes

user[R]

Public Class Methods

new(user) click to toggle source
# File lib/eventifier/preferences.rb, line 2
def initialize(user)
  @user = user
end

Public Instance Methods

to_hashes() click to toggle source
# File lib/eventifier/preferences.rb, line 6
def to_hashes
  keys.collect do |key|
    {
      :key   => key,
      :label => label_for(key),
      :value => value_for(key)
    }
  end
end
update(preferences) click to toggle source
# File lib/eventifier/preferences.rb, line 16
def update(preferences)
  settings.preferences['email'] ||= {}
  to_hashes.each do |hash|
    settings.preferences['email'][hash[:key]] = boolean(
      preferences[hash[:key]]
    )
  end
  settings.save
end

Private Instance Methods

boolean(value) click to toggle source
# File lib/eventifier/preferences.rb, line 30
def boolean(value)
  !(value.blank? || value == '0')
end
keys() click to toggle source
# File lib/eventifier/preferences.rb, line 34
def keys
  @keys ||= begin
    hash = Eventifier::NotificationMapping.notification_mappings
    ['default'] + hash.keys.collect { |key|
      hash[key].collect { |value|
        (key.split('.') + ['notify', Eventifier::Relationship.new(user, value).key]).join('_')
      }
    }.flatten
  end
end
label_for(key) click to toggle source
# File lib/eventifier/preferences.rb, line 45
def label_for(key)
  I18n.translate :"events.labels.preferences.#{key}", default: key
end
settings() click to toggle source
# File lib/eventifier/preferences.rb, line 49
def settings
  @settings ||= Eventifier::NotificationSetting.for_user user
end
value_for(key) click to toggle source
# File lib/eventifier/preferences.rb, line 53
def value_for(key)
  settings.preferences['email'].nil?      ||
  settings.preferences['email'][key].nil? ||
  settings.preferences['email'][key]
end