foodsoft/plugins/printer/app/controllers/printer_jobs_controller.rb

54 lines
1.5 KiB
Ruby
Raw Normal View History

class PrinterJobsController < ApplicationController
include Concerns::SendOrderPdf
before_action -> { require_plugin_enabled FoodsoftPrinter }
def index
jobs = PrinterJob.includes(:printer_job_updates)
@pending_jobs = jobs.pending
@queued_jobs = jobs.queued
@finished_jobs = jobs.finished.order(finished_at: :desc).page(params[:page]).per(@per_page)
end
def create
order = Order.find(params[:order])
state = order.open? ? 'queued' : 'ready'
count = 0
PrinterJob.transaction do
%w[articles fax groups matrix].each do |document|
next unless FoodsoftConfig["printer_print_order_#{document}"]
job = PrinterJob.create! order: order, document: document, created_by: current_user
job.add_update! state
count += 1
end
end
redirect_to order, notice: t('.notice', count: count)
end
def show
@job = PrinterJob.find(params[:id])
end
2020-08-12 20:05:57 +02:00
def requeue
job = PrinterJob.find(params[:id])
job = PrinterJob.create! order: job.order, document: job.document, created_by: current_user
job.add_update! 'requeued'
PrinterChannel.broadcast_unfinished
redirect_to printer_jobs_path, notice: t('.notice')
end
def document
job = PrinterJob.find(params[:id])
send_order_pdf job.order, job.document
end
def destroy
job = PrinterJob.find(params[:id])
job.finish! current_user
redirect_to printer_jobs_path, notice: t('.notice')
rescue StandardError => e
redirect_to printer_jobs_path, t('errors.general_msg', msg: e.message)
end
end