# frozen_string_literal: true
class CustomWizard::AdminSubmissionsController < CustomWizard::AdminController
  skip_before_action :preload_json, :check_xhr, only: [:download]
  before_action :find_wizard, except: [:index]
  requires_plugin "discourse-custom-wizard"

  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),
      submissions:
        ActiveModel::ArraySerializer.new(
          submission_list.submissions,
          each_serializer: CustomWizard::SubmissionSerializer,
        ),
      total: submission_list.total,
    )
  end

  def download
    content =
      ActiveModel::ArraySerializer.new(
        CustomWizard::Submission.list(@wizard).submissions,
        each_serializer: CustomWizard::SubmissionSerializer,
      )

    send_data content.to_json,
              filename: "#{Discourse.current_hostname}-wizard-submissions-#{@wizard.name}.json",
              content_type: "application/json",
              disposition: "attachment"
  end

  protected

  def submission_list
    CustomWizard::Submission.list(@wizard, page: params[:page].to_i)
  end
end
