# frozen_string_literal: true module Jobs class MergeUser < ::Jobs::Base def execute(args) target_user_id = args[:target_user_id] current_user_id = args[:current_user_id] user = User.find_by(id: args[:user_id]) target_user = User.find_by(id: args[:target_user_id]) current_user = User.find_by(id: args[:current_user_id]) guardian = Guardian.new(current_user) serializer_opts = { root: false, scope: guardian } if user = UserMerger.new(user, target_user, current_user).merge! user_json = AdminDetailedUserSerializer.new(user, serializer_opts).as_json ::MessageBus.publish '/merge_user', { success: 'OK' }.merge(merged: true, user: user_json), user_ids: [current_user.id] else ::MessageBus.publish '/merge_user', { failed: 'FAILED' }.merge(user: AdminDetailedUserSerializer.new(@user, serializer_opts).as_json), user_ids: [current_user.id] end end end end