12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- module Integration::ImportJobBase
- extend ActiveSupport::Concern
- def job_try_index
- job_index(
- dry_run: true,
- take_finished: params[:finished] == 'true'
- )
- end
- def job_try_create
- ImportJob.dry_run(name: backend, payload: payload_dry_run)
- render json: {
- result: 'ok',
- }
- end
- def job_start_index
- job_index(dry_run: false)
- end
- def job_start_create
- if !ImportJob.exists?(name: backend, finished_at: nil)
- job = ImportJob.create(name: backend)
- AsyncImportJob.perform_later(job)
- end
- render json: {
- result: 'ok',
- }
- end
- def payload_dry_run
- clean_payload(params.permit!.to_h)
- end
- private
- def clean_payload(payload)
- payload.except(:wizardData, :action, :controller)
- end
- def answer_with
- result = yield
- render json: result.merge(result: 'ok')
- rescue => e
- logger.error(e)
- render json: {
- result: 'failed',
- message: e.message,
- }
- end
- def backend
- "Import::#{controller_name.classify}"
- end
- def job_index(dry_run:, take_finished: true)
- job = ImportJob.find_by(
- name: backend,
- dry_run: dry_run,
- finished_at: nil
- )
- if !job && take_finished
- job = ImportJob.where(
- name: backend,
- dry_run: dry_run
- ).reorder(created_at: :desc).limit(1).first
- end
- if job
- model_show_render_item(job)
- else
- render json: {}
- end
- end
- end
|