2019-05-03 06:17:27 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2016-12-11 23:36:15 +08:00
|
|
|
class GroupActionLogger
|
2017-01-04 21:23:21 +08:00
|
|
|
|
2021-07-28 19:04:04 +08:00
|
|
|
def initialize(acting_user, group)
|
2016-12-11 23:36:15 +08:00
|
|
|
@acting_user = acting_user
|
|
|
|
@group = group
|
|
|
|
end
|
|
|
|
|
|
|
|
def log_make_user_group_owner(target_user)
|
|
|
|
GroupHistory.create!(default_params.merge(
|
|
|
|
action: GroupHistory.actions[:make_user_group_owner],
|
|
|
|
target_user: target_user
|
|
|
|
))
|
|
|
|
end
|
|
|
|
|
|
|
|
def log_remove_user_as_group_owner(target_user)
|
|
|
|
GroupHistory.create!(default_params.merge(
|
|
|
|
action: GroupHistory.actions[:remove_user_as_group_owner],
|
|
|
|
target_user: target_user
|
|
|
|
))
|
|
|
|
end
|
|
|
|
|
2021-12-09 20:30:27 +08:00
|
|
|
def log_add_user_to_group(target_user, subject = nil)
|
2016-12-11 23:36:15 +08:00
|
|
|
GroupHistory.create!(default_params.merge(
|
|
|
|
action: GroupHistory.actions[:add_user_to_group],
|
2021-12-09 20:30:27 +08:00
|
|
|
target_user: target_user,
|
|
|
|
subject: subject
|
2016-12-11 23:36:15 +08:00
|
|
|
))
|
|
|
|
end
|
|
|
|
|
2021-12-09 20:30:27 +08:00
|
|
|
def log_remove_user_from_group(target_user, subject = nil)
|
2016-12-11 23:36:15 +08:00
|
|
|
GroupHistory.create!(default_params.merge(
|
|
|
|
action: GroupHistory.actions[:remove_user_from_group],
|
2021-12-09 20:30:27 +08:00
|
|
|
target_user: target_user,
|
|
|
|
subject: subject
|
2016-12-11 23:36:15 +08:00
|
|
|
))
|
|
|
|
end
|
|
|
|
|
|
|
|
def log_change_group_settings
|
|
|
|
@group.previous_changes.except(*excluded_attributes).each do |attribute_name, value|
|
|
|
|
next if value[0].blank? && value[1].blank?
|
|
|
|
|
|
|
|
GroupHistory.create!(default_params.merge(
|
|
|
|
action: GroupHistory.actions[:change_group_setting],
|
|
|
|
subject: attribute_name,
|
|
|
|
prev_value: value[0],
|
|
|
|
new_value: value[1]
|
|
|
|
))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
2017-01-04 21:23:21 +08:00
|
|
|
def excluded_attributes
|
|
|
|
[
|
|
|
|
:bio_cooked,
|
|
|
|
:updated_at,
|
|
|
|
:created_at,
|
|
|
|
:user_count
|
|
|
|
]
|
|
|
|
end
|
2016-12-11 23:36:15 +08:00
|
|
|
|
2017-01-04 21:23:21 +08:00
|
|
|
def default_params
|
|
|
|
{ group: @group, acting_user: @acting_user }
|
|
|
|
end
|
2016-12-11 23:36:15 +08:00
|
|
|
end
|