foodsoft/plugins/printer/app/models/printer_job.rb
2019-02-05 23:32:20 +01:00

31 lines
1,021 B
Ruby

class PrinterJob < ActiveRecord::Base
belongs_to :order
belongs_to :created_by, class_name: 'User', foreign_key: 'created_by_user_id'
belongs_to :finished_by, class_name: 'User', foreign_key: 'finished_by_user_id'
has_many :printer_job_updates
scope :finished, -> { where.not(finished_at: nil) }
scope :unfinished, -> { where(finished_at: nil).order(:id) }
scope :pending, -> { unfinished.includes(:order).where.not(orders: {state: 'open'}) }
scope :queued, -> { unfinished.includes(:order).where(orders: {state: 'open'}) }
def last_update_at
printer_job_updates.order(:created_at).last.try(&:created_at)
end
def last_update_state
printer_job_updates.order(:created_at).last.try(&:state)
end
def add_update!(state, message=nil)
return unless finished_at.nil?
PrinterJobUpdate.create! printer_job: self, state: state, message: message
end
def finish!(user=nil)
return unless finished_at.nil?
update_attributes finished_at: Time.now, finished_by: user
end
end