Module: ErpApp::Extensions::ActiveRecord::HasUserPreferences::InstanceMethods

Defined in:
lib/erp_app/extensions/active_record/has_user_preferences.rb

Instance Method Summary collapse

Instance Method Details

#get_user_preference(user, preference_type_iid) ⇒ Object



56
57
58
59
60
61
62
63
64
# File 'lib/erp_app/extensions/active_record/has_user_preferences.rb', line 56

def get_user_preference(user, preference_type_iid)
					preference_type = PreferenceType.find_by_internal_identifier(preference_type_iid.to_s)
					preference = find_user_preference(user, preference_type)
					if preference.nil?
 preference_type.default_preference_option.value
					else
 preference.preference_option.value
					end
end

#preferences(user) ⇒ Object



25
26
27
# File 'lib/erp_app/extensions/active_record/has_user_preferences.rb', line 25

def preferences(user)
 self.user_preferences.includes([:preference]).where('user_id = ?', user.id).map(&:preference)
end

#set_user_preference(user, preference_type_iid, preference_option_lookup) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/erp_app/extensions/active_record/has_user_preferences.rb', line 29

def set_user_preference(user, preference_type_iid, preference_option_lookup)
 preference_type = PreferenceType.find_by_internal_identifier(preference_type_iid.to_s)
 preference_option = nil
 #preference option can be set using 
 #:default [symbol which will set to default for preference type]
 #:preference_option_iid [the internal identifier for the preference option]
 #:value [the value of the preference_option]
 
 preference_option = preference_type.default_option if preference_option_lookup == :default
 preference_option = preference_type.preference_options.where('internal_identifier = ?', preference_option_lookup.to_s).first if preference_option.nil?
 preference_option = preference_type.preference_options.where('value = ?', preference_option_lookup.to_s).first if preference_option.nil?

 if preference_option.nil?
   raise 'Invalid option for preference type'
 else
   preference = find_user_preference(user, preference_type)
   unless preference.nil?
    preference.preference_option = preference_option
    preference.save
	  else
		  preference = Preference.create(:preference_type => preference_type, :preference_option => preference_option)
		  self.user_preferences << UserPreference.create(:preference => preference, :user => user)
		  self.save
	  end
	end
end