Class: AdminAction
- Inherits:
-
RailsBase::ApplicationRecord
- Object
- ApplicationRecord
- RailsBase::ApplicationRecord
- AdminAction
- Extended by:
- ActionView::Helpers::DateHelper
- Defined in:
- app/models/admin_action.rb
Overview
Schema Information
Table name: admin_actions
id :bigint not null, primary key
admin_user_id :bigint not null
user_id :bigint
action :string(255) not null
change_from :string(255)
change_to :string(255)
long_action :text(65535)
created_at :datetime not null
updated_at :datetime not null
Constant Summary collapse
- DEFAULT_PAGE_COUNT =
5
- DEFAULT_PAGE_COUNT_SELECT_RANGE =
(0..50).select { |x| x%5 == 0 && x != 0 }
- DEFAULT_PAGE_RANGE =
2
Class Method Summary collapse
- .action(admin_user:, action:, user: nil, original_attribute: nil, new_attribute: nil, long_action: nil) ⇒ Object
- .get_cache_items(user:, time: Time.zone.now, use_lv: false, alltime: false, delete: false, update_lv: false) ⇒ Object
- .paginate_records(page:, user_id: nil, admin_id: nil, count_on_page: DEFAULT_PAGE_COUNT, count: false) ⇒ Object
- .repopulate_cache!(max_items: 1000) ⇒ Object
- .ship_to_cache!(instance:, user:, created_at: nil) ⇒ Object
Instance Method Summary collapse
Methods inherited from RailsBase::ApplicationRecord
_magically_defined_time_objects
Class Method Details
.action(admin_user:, action:, user: nil, original_attribute: nil, new_attribute: nil, long_action: nil) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'app/models/admin_action.rb', line 24 def action(admin_user:, action:, user: nil, original_attribute: nil, new_attribute: nil, long_action: nil) params = { admin_user_id: admin_user.id, action: action } params[:user_id] = user.id if user params[:change_from] = original_attribute.to_s unless original_attribute.nil? params[:change_to] = new_attribute.to_s unless new_attribute.nil? params[:long_action] = long_action unless long_action.nil? begin instance = AdminAction.create!(**params) ship_to_cache!(instance: instance, user: user, created_at: Time.zone.now) if user instance rescue StandardError => e Rails.logger.error(e.) Rails.logger.error("Unable to save admin action [#{action}]: [#{params}]") nil end end |
.get_cache_items(user:, time: Time.zone.now, use_lv: false, alltime: false, delete: false, update_lv: false) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'app/models/admin_action.rb', line 55 def get_cache_items(user:, time: Time.zone.now, use_lv: false, alltime: false, delete: false, update_lv: false) if use_lv Rails.logger.warn { "Using Last Viewed admin actions for user #{user.id}" } temp = RailsBase::Admin::ActionCache.instance.get_last_viewed(user: user) time = temp.nil? ? time : (Time.at(temp) rescue time) end objects = RailsBase::Admin::ActionCache.instance.actions_since(user: user, time: time, alltime: alltime) = objects.map do |object| msg = object[0] in_words = distance_of_time_in_words(Time.zone.now, object[1], include_seconds: true) [msg, "~ #{in_words.humanize} ago"] end if delete Rails.logger.warn { "Deleting admin actions for user #{user.id}" } RailsBase::Admin::ActionCache.instance.delete_actions_since!(user: user, time: time) end if update_lv Rails.logger.warn { "Udating Last Viewed admin actions for user #{user.id}" } RailsBase::Admin::ActionCache.instance.update_last_viewed(user: user, time: time) end end |
.paginate_records(page:, user_id: nil, admin_id: nil, count_on_page: DEFAULT_PAGE_COUNT, count: false) ⇒ Object
88 89 90 91 92 93 94 95 96 97 98 |
# File 'app/models/admin_action.rb', line 88 def paginate_records(page:, user_id: nil, admin_id: nil, count_on_page: DEFAULT_PAGE_COUNT, count: false) params = {} params[:user_id] = user_id if user_id && user_id.positive? params[:admin_user_id] = admin_id if admin_id && admin_id.positive? offset = (page - 1) * count_on_page if count where(params).count else where(params).order(created_at: :desc).offset(offset).limit(count_on_page) end end |
.repopulate_cache!(max_items: 1000) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'app/models/admin_action.rb', line 41 def repopulate_cache!(max_items: 1000) objects = order(created_at: :desc).where.not(user_id: nil).limit(max_items) count = 0 objects.in_batches(of: 500) do |group| group.each do |instance| count += 1 user = instance.user msg = instance.readable(with_occurred: false) RailsBase::Admin::ActionCache.instance.add_action(user: user, msg: msg, occured: instance.created_at) end end count end |
.ship_to_cache!(instance:, user:, created_at: nil) ⇒ Object
83 84 85 86 |
# File 'app/models/admin_action.rb', line 83 def ship_to_cache!(instance:, user:, created_at: nil) msg = instance.readable(with_occurred: false) RailsBase::Admin::ActionCache.instance.add_action(user: user, msg: msg, occured: instance.created_at) end |
Instance Method Details
#admin_user ⇒ Object
101 102 103 |
# File 'app/models/admin_action.rb', line 101 def admin_user @admin_user ||= User.find admin_user_id end |
#readable(long: false, with_occurred: true) ⇒ Object
109 110 111 112 113 114 115 |
# File 'app/models/admin_action.rb', line 109 def readable(long: false, with_occurred: true) msg = "[#{admin_user.full_name}(#{admin_user_id})]: #{ long ? long_action : action}." msg += " Changed from [#{change_from}]." unless change_from.nil? msg += " Changed to [#{change_to}]." unless change_to.nil? msg += " Occured at #{created_at}." if with_occurred msg end |
#user ⇒ Object
105 106 107 |
# File 'app/models/admin_action.rb', line 105 def user @user ||= user_id ? User.find(user_id) : nil end |