Class: SampleManifest::SampleTubeBehaviour::Core

Inherits:
SampleManifest::SharedTubeBehaviour::Base show all
Includes:
CoreBehaviour::NoSpecializedValidation, CoreBehaviour::StockAssets
Defined in:
app/models/sample_manifest/sample_tube_behaviour.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from CoreBehaviour::StockAssets

#generate_sample_and_aliquot, #stocks?, #tag_depth_for_sample

Methods included from CoreBehaviour::NoSpecializedValidation

#specialized_fields, #validate_specialized_fields

Methods inherited from SampleManifest::SharedTubeBehaviour::Base

#details_array, #updated_by!

Methods included from CoreBehaviour::Shared

#details, #generate_sanger_ids, included

Constructor Details

#initialize(manifest) ⇒ Core

Returns a new instance of Core.



9
10
11
12
# File 'app/models/sample_manifest/sample_tube_behaviour.rb', line 9

def initialize(manifest)
  @manifest = manifest
  @tubes = []
end

Instance Attribute Details

#tubesObject (readonly)

Returns the value of attribute tubes.



7
8
9
# File 'app/models/sample_manifest/sample_tube_behaviour.rb', line 7

def tubes
  @tubes
end

Instance Method Details

#acceptable_purposesObject



22
23
24
# File 'app/models/sample_manifest/sample_tube_behaviour.rb', line 22

def acceptable_purposes
  Tube::Purpose.where(target_type: SampleTube)
end

#default_purposeObject



26
27
28
# File 'app/models/sample_manifest/sample_tube_behaviour.rb', line 26

def default_purpose
  Tube::Purpose.standard_sample_tube
end

#generateObject



14
15
16
# File 'app/models/sample_manifest/sample_tube_behaviour.rb', line 14

def generate
  @tubes = generate_tubes(purpose)
end

#included_resourcesObject



43
44
45
# File 'app/models/sample_manifest/sample_tube_behaviour.rb', line 43

def included_resources
  [{ sample: :sample_metadata, asset: %i[aliquots barcodes] }]
end

#io_samplesObject



18
19
20
# File 'app/models/sample_manifest/sample_tube_behaviour.rb', line 18

def io_samples
  samples.map { |sample| { sample: sample, container: { barcode: sample.primary_receptacle.human_barcode } } }
end

#labwareObject Also known as: printables



38
39
40
# File 'app/models/sample_manifest/sample_tube_behaviour.rb', line 38

def labware
  tubes | labware_from_samples | @manifest.assets.map(&:labware)
end

#labware=(labware) ⇒ Object



34
35
36
# File 'app/models/sample_manifest/sample_tube_behaviour.rb', line 34

def labware=(labware)
  @tubes = labware
end

#labware_from_samplesObject



30
31
32
# File 'app/models/sample_manifest/sample_tube_behaviour.rb', line 30

def labware_from_samples
  samples.map { |s| s.primary_receptacle.labware }
end