1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-01 12:24:28 +01:00
fab-manager/app/models/setting.rb

112 lines
4.6 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
# Setting is a configuration element of the platform. Only administrators are allowed to modify Settings
# For some settings, changing them will involve some callback actions (like rebuilding the stylesheets if the theme color Setting is changed).
# A full history of the previous values is kept in database with the date and the author of the change
2020-01-27 17:10:29 +01:00
# after_update callback is handled by SettingService
2020-03-25 10:16:47 +01:00
class Setting < ApplicationRecord
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
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
name_genre
reminder_enable
reminder_delay
event_explications_alert
space_explications_alert
visibility_yearly
visibility_others
display_name_enable
machines_sort_by
accounting_journal_code
accounting_card_client_code
accounting_card_client_label
accounting_wallet_client_code
accounting_wallet_client_label
accounting_other_client_code
accounting_other_client_label
accounting_wallet_code
accounting_wallet_label
accounting_VAT_code
accounting_VAT_label
accounting_subscription_code
accounting_subscription_label
accounting_Machine_code
accounting_Machine_label
accounting_Training_code
accounting_Training_label
accounting_Event_code
accounting_Event_label
accounting_Space_code
accounting_Space_label
hub_last_version
2020-01-15 10:46:04 +01:00
hub_public_key
fab_analytics
link_name
2020-01-27 17:10:29 +01:00
home_content
home_css
origin
2020-05-12 15:04:06 +02:00
uuid
phone_required
tracking_id
book_overlapping_slots] }
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
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(invoicing_profile: admin.invoicing_profile, value: val)
2018-12-17 16:02:02 +01:00
end
2020-05-13 15:02:03 +02:00
##
# Return the value of the requested setting, if any.
2020-05-13 15:02:03 +02:00
# Usage: Setting.get('my_setting')
# @return {String}
2020-05-13 15:02:03 +02:00
##
def self.get(name)
res = find_by(name: name)&.value
# handle boolean values
return true if res == 'true'
return false if res == 'false'
res
2020-05-13 15:02:03 +02:00
end
2016-03-23 18:39:41 +01:00
end