# frozen_string_literal: true class CustomWizard::AdminLogsController < CustomWizard::AdminController before_action :find_wizard, except: [:index] def index render json: ActiveModel::ArraySerializer.new( CustomWizard::Wizard.list(current_user), each_serializer: CustomWizard::BasicWizardSerializer ) end def show render_json_dump( wizard: CustomWizard::BasicWizardSerializer.new(@wizard, root: false), logs: ActiveModel::ArraySerializer.new( log_list.logs, each_serializer: CustomWizard::LogSerializer ), total: log_list.total ) end protected def log_list @log_list ||= begin list = CustomWizard::Log.list(params[:page].to_i, params[:limit].to_i, params[:wizard_id]) if list.logs.any? && (usernames = list.logs.map(&:username)).present? user_map = User.where(username: usernames) .reduce({}) do |result, user| result[user.username] = user result end list.logs.each do |log_item| log_item.user = user_map[log_item.username] end end list end end end