sanger/sequencescape

View on GitHub
app/models/event/scanned_into_lab_event.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true
class Event::ScannedIntoLabEvent < Event
  after_create :set_qc_state_pending, if: :qc_state_not_final?
  alias asset eventful

  def self.create_for_asset!(asset, location_barcode, created_by)
    create!(
      eventful: asset,
      message: "Scanned into #{location_barcode}",
      content: Date.today.to_s,
      family: 'scanned_into_lab',
      created_by: created_by
    )
  end

  def set_qc_state_pending
    asset.receptacle.qc_state = 'pending'
    asset.receptacle.save!
  end

  def qc_state_not_final?
    asset.respond_to?(:receptacle) && %w[passed failed].exclude?(asset.receptacle.qc_state)
  end
end