Class: UatActions::GenerateSampleManifest

Inherits:
UatActions
  • Object
show all
Includes:
Shared::StudyHelper, Shared::SupplierHelper
Defined in:
app/uat_actions/uat_actions/generate_sample_manifest.rb

Overview

Will construct a sample manifest

Constant Summary collapse

ERROR_TUBE_PURPOSE_DOES_NOT_EXIST =
"Tube purpose '%s' does not exist."

Constants inherited from UatActions

CATEGORY_LIST

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from UatActions

all, category, find, form_field, form_fields, grouped_and_sorted_uat_actions, id, inherited, permitted, #report, #save, to_partial_path, uat_actions

Class Method Details

.defaultObject



52
53
54
55
56
57
58
59
60
# File 'app/uat_actions/uat_actions/generate_sample_manifest.rb', line 52

def self.default
  new(
    study_name: UatActions::StaticRecords.study.name,
    supplier_name: UatActions::StaticRecords.supplier.name,
    asset_type: '1dtube',
    count: 2,
    tube_purpose_name: UatActions::StaticRecords.tube_purpose.name
  )
end

Instance Method Details

#create_sample_manifestObject



81
82
83
# File 'app/uat_actions/uat_actions/generate_sample_manifest.rb', line 81

def create_sample_manifest
  SampleManifest.create!(study:, supplier:, asset_type:, count:, purpose:)
end

#create_samples(sample_manifest) ⇒ Object



90
91
92
93
94
95
96
97
98
99
# File 'app/uat_actions/uat_actions/generate_sample_manifest.rb', line 90

def create_samples(sample_manifest)
  sample_manifest.assets.each do |asset|
    raise 'Manifest for plates is not supported yet' unless asset_type == '1dtube'

    create_sample("Sample_#{asset.human_barcode}_1", sample_manifest).tap do |sample|
      asset.aliquots.create!(sample:, study:)
      study.samples << sample
    end
  end
end

#generate_manifest(sample_manifest) ⇒ Object



85
86
87
88
# File 'app/uat_actions/uat_actions/generate_sample_manifest.rb', line 85

def generate_manifest(sample_manifest)
  sample_manifest.generate
  create_samples(sample_manifest) if with_samples == '1'
end

#performObject



62
63
64
65
66
67
68
# File 'app/uat_actions/uat_actions/generate_sample_manifest.rb', line 62

def perform
  sample_manifest = create_sample_manifest
  generate_manifest(sample_manifest)
  print_report(sample_manifest)

  true
end

#validate_tube_purpose_existsvoid

This method returns an undefined value.

Validates that the tube purpose exists for the selected tube purpose name.



73
74
75
76
77
78
79
# File 'app/uat_actions/uat_actions/generate_sample_manifest.rb', line 73

def validate_tube_purpose_exists
  return if tube_purpose_name.blank? # Already validated by presence
  return if Tube::Purpose.exists?(name: tube_purpose_name)

  message = format(ERROR_TUBE_PURPOSE_DOES_NOT_EXIST, tube_purpose_name)
  errors.add(:tube_purpose_name, message)
end