Class: LabwhereReception
- Inherits:
-
Object
- Object
- LabwhereReception
- Extended by:
- ActiveModel::Naming
- Includes:
- ActiveModel::Conversion, ActiveModel::Validations
- Defined in:
- app/models/labwhere_reception.rb
Overview
A simple class to handle the behaviour from the labwhere reception controller
Instance Attribute Summary collapse
-
#asset_barcodes ⇒ Object
readonly
Returns the value of attribute asset_barcodes.
-
#location_barcode ⇒ Object
readonly
Returns the value of attribute location_barcode.
-
#user_code ⇒ Object
readonly
Returns the value of attribute user_code.
Instance Method Summary collapse
-
#assets ⇒ Object
rubocop:enable Metrics/MethodLength.
- #id ⇒ Object
-
#initialize(user_code, location_barcode, asset_barcodes) ⇒ LabwhereReception
constructor
A new instance of LabwhereReception.
- #missing_barcodes ⇒ Object
- #new_record? ⇒ Boolean
- #persisted? ⇒ Boolean
-
#save ⇒ Object
save attempts to perform the actions, and returns true if it was successful This maintains compatibility with rails rubocop:todo Metrics/MethodLength.
- #user ⇒ Object
Constructor Details
#initialize(user_code, location_barcode, asset_barcodes) ⇒ LabwhereReception
Returns a new instance of LabwhereReception.
21 22 23 24 25 |
# File 'app/models/labwhere_reception.rb', line 21 def initialize(user_code, , ) @asset_barcodes = ( || []).map(&:strip) @location_barcode = .try(:strip) @user_code = user_code.try(:strip) end |
Instance Attribute Details
#asset_barcodes ⇒ Object (readonly)
Returns the value of attribute asset_barcodes.
11 12 13 |
# File 'app/models/labwhere_reception.rb', line 11 def @asset_barcodes end |
#location_barcode ⇒ Object (readonly)
Returns the value of attribute location_barcode.
11 12 13 |
# File 'app/models/labwhere_reception.rb', line 11 def @location_barcode end |
#user_code ⇒ Object (readonly)
Returns the value of attribute user_code.
11 12 13 |
# File 'app/models/labwhere_reception.rb', line 11 def user_code @user_code end |
Instance Method Details
#assets ⇒ Object
rubocop:enable Metrics/MethodLength
80 81 82 |
# File 'app/models/labwhere_reception.rb', line 80 def assets @assets ||= Labware.() end |
#id ⇒ Object
27 28 29 |
# File 'app/models/labwhere_reception.rb', line 27 def id nil end |
#missing_barcodes ⇒ Object
84 85 86 87 88 |
# File 'app/models/labwhere_reception.rb', line 84 def = assets.to_set(&:machine_barcode) = assets.to_set(&:human_barcode) .delete_if { || .include?() || .include?() } end |
#new_record? ⇒ Boolean
35 36 37 |
# File 'app/models/labwhere_reception.rb', line 35 def new_record? true end |
#persisted? ⇒ Boolean
31 32 33 |
# File 'app/models/labwhere_reception.rb', line 31 def persisted? false end |
#save ⇒ Object
save attempts to perform the actions, and returns true if it was successful This maintains compatibility with rails rubocop:todo Metrics/MethodLength
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'app/models/labwhere_reception.rb', line 46 def save # rubocop:todo Metrics/AbcSize return false unless valid? begin scan = LabWhereClient::Scan.create( location_barcode: , user_code: user_code, labware_barcodes: ) unless scan.valid? # Prepend the errors with 'Labwhere' to make it clear where the error came from # This is important as you can get both Sequencescape and Labwhere errors of the same type # e.g. User does not exist labwhere_errors = scan.errors.map { |error| "LabWhere #{error}" } errors.add(:base, labwhere_errors) return false end rescue LabWhereClient::LabwhereException => e errors.add(:base, 'Could not connect to Labwhere.') return false end assets.each do |asset| asset.events.create_scanned_into_lab!(, user.login) BroadcastEvent::LabwareReceived.create!(seed: asset, user: user, properties: { location_barcode: }) end valid? end |
#user ⇒ Object
39 40 41 |
# File 'app/models/labwhere_reception.rb', line 39 def user @user ||= User.(@user_code) end |