class CustomWizard::AdminTransferController < CustomWizard::AdminController
  skip_before_action :check_xhr, :only => [:export]

  def export
    wizard_ids = params['wizards']
    templates = []

    if wizard_ids.nil?
      render json: { error: I18n.t('wizard.export.error.select_one') }
      return
    end

    wizard_ids.each do |wizard_id|
      if template = CustomWizard::Template.find(wizard_id)
        templates.push(template)
      end
    end

    send_data templates.to_json,
      type: "application/json",
      disposition: 'attachment',
      filename: 'wizards.json'
  end

  def import
    file = File.read(params['file'].tempfile)
    
    if file.nil?
      render json: { error: I18n.t('wizard.import.error.no_file') }
      return
    end

    file_size = file.size
    max_file_size = 512 * 1024
    
    if max_file_size < file_size
      render json: { error: I18n.t('wizard.import.error.file_large') }
      return
    end
        
    begin
      template_json = JSON.parse file
    rescue JSON::ParserError
      render json: { error: I18n.t('wizard.import.error.invalid_json') }
      return
    end
    
    success_ids = []
    failed_ids = []
    
    template_json.each do |t_json|
      template = CustomWizard::Template.new(t_json)
      template.save(skip_jobs: true)
            
      if template.errors.any?
        failed_ids.push t_json['id']
      else
        success_ids.push t_json['id']
      end
    end

    if success_ids.length == 0
      render json: { error: I18n.t('wizard.import.error.no_valid_wizards') }
    else
      render json: { success: success_ids, failed: failed_ids }
    end
  end
end