2016-03-23 18:39:41 +01:00
|
|
|
class Setting < ActiveRecord::Base
|
2018-12-17 16:02:02 +01:00
|
|
|
has_many :history_values
|
2016-03-23 18:39:41 +01:00
|
|
|
validates :name, inclusion:
|
2018-12-17 16:02:02 +01:00
|
|
|
{ in: %w[about_title
|
2016-03-23 18:39:41 +01:00
|
|
|
about_body
|
|
|
|
about_contacts
|
2019-04-18 15:57:56 +02:00
|
|
|
privacy_draft
|
2019-04-18 12:30:00 +02:00
|
|
|
privacy_body
|
|
|
|
privacy_dpo
|
2016-03-23 18:39:41 +01:00
|
|
|
twitter_name
|
|
|
|
home_blogpost
|
|
|
|
machine_explications_alert
|
|
|
|
training_explications_alert
|
|
|
|
training_information_message
|
|
|
|
subscription_explications_alert
|
|
|
|
invoice_logo
|
|
|
|
invoice_reference
|
|
|
|
invoice_code-active
|
|
|
|
invoice_code-value
|
|
|
|
invoice_order-nb
|
|
|
|
invoice_VAT-active
|
|
|
|
invoice_VAT-rate
|
|
|
|
invoice_text
|
|
|
|
invoice_legals
|
|
|
|
booking_window_start
|
|
|
|
booking_window_end
|
|
|
|
booking_slot_duration
|
|
|
|
booking_move_enable
|
|
|
|
booking_move_delay
|
|
|
|
booking_cancel_enable
|
|
|
|
booking_cancel_delay
|
|
|
|
main_color
|
|
|
|
secondary_color
|
|
|
|
fablab_name
|
2016-08-17 12:49:52 +02:00
|
|
|
name_genre
|
|
|
|
reminder_enable
|
2016-11-29 16:46:19 +01:00
|
|
|
reminder_delay
|
2017-02-15 09:48:27 +01:00
|
|
|
event_explications_alert
|
2017-08-24 18:34:18 +02:00
|
|
|
space_explications_alert
|
|
|
|
visibility_yearly
|
2018-07-24 12:24:51 +02:00
|
|
|
visibility_others
|
2018-09-18 15:30:54 +02:00
|
|
|
display_name_enable
|
2018-12-17 16:02:02 +01:00
|
|
|
machines_sort_by] }
|
2016-03-23 18:39:41 +01:00
|
|
|
|
2019-04-25 11:40:26 +02:00
|
|
|
after_update :update_stylesheet, :notify_privacy_policy_changed if :value_changed?
|
2016-03-23 18:39:41 +01:00
|
|
|
|
|
|
|
def update_stylesheet
|
2018-12-17 16:02:02 +01:00
|
|
|
Stylesheet.first&.rebuild! if %w[main_color secondary_color].include? name
|
2016-03-23 18:39:41 +01:00
|
|
|
end
|
|
|
|
|
2019-04-25 11:40:26 +02:00
|
|
|
def notify_privacy_policy_changed
|
|
|
|
return unless name == 'privacy_body'
|
|
|
|
|
|
|
|
NotificationCenter.call type: :notify_privacy_policy_changed,
|
|
|
|
receiver: User.all,
|
|
|
|
attached_object: self
|
|
|
|
end
|
|
|
|
|
2018-12-17 16:02:02 +01:00
|
|
|
def value
|
|
|
|
last_value = history_values.order(HistoryValue.arel_table['created_at'].desc).first
|
|
|
|
last_value&.value
|
|
|
|
end
|
2016-03-23 18:39:41 +01:00
|
|
|
|
2019-04-23 12:58:01 +02:00
|
|
|
def last_update
|
|
|
|
last_value = history_values.order(HistoryValue.arel_table['created_at'].desc).first
|
|
|
|
last_value&.created_at
|
|
|
|
end
|
|
|
|
|
2018-12-17 16:02:02 +01:00
|
|
|
def value=(val)
|
|
|
|
admin = User.admins.first
|
|
|
|
save && history_values.create(user: admin, value: val)
|
|
|
|
end
|
2016-03-23 18:39:41 +01:00
|
|
|
end
|