Class: SequencingRequest

Inherits:
CustomerRequest show all
Extended by:
Request::AccessioningRequired
Includes:
Api::Messages::FlowcellIo::LaneExtensions, Request::CustomerResponsibility, Request::SampleCompoundAliquotTransfer
Defined in:
app/models/sequencing_request.rb

Defined Under Namespace

Classes: Metadata, RequestOptionsValidator

Constant Summary

Constants included from Metadata

Metadata::SECTION_FIELDS

Constants included from Request::Statemachine

Request::Statemachine::ACTIVE, Request::Statemachine::COMPLETED_STATE, Request::Statemachine::INACTIVE, Request::Statemachine::OPENED_STATE, Request::Statemachine::SORT_ORDER

Constants included from StandardNamedScopes

StandardNamedScopes::SORT_FIELDS, StandardNamedScopes::SORT_ORDERS

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Request::AccessioningRequired

accessioning_required?

Methods included from Request::SampleCompoundAliquotTransfer

#compound_samples_needed?, #transfer_aliquots_into_compound_sample_aliquots

Methods included from Request::CustomerResponsibility

included

Methods inherited from CustomerRequest

#customer_accepts_responsibility!, #generate_create_request_event, #generate_destroy_request_event, #generate_request_event, #update_responsibilities!

Methods inherited from Request

accessioning_required?, #add_comment, #aliquot_attributes, #associated_studies, #cancelable?, #copy, #current_request_event, #customer_accepts_responsibility!, #detect_descriptor, #eventful_studies, for_study, #format_qc_information, get_all_comments, #has_passed, #lab_events_for_batch, #manifest_processed!, #most_recent_event_named, #next_request_type_id, #next_requests, #next_requests_via_asset, #next_requests_via_submission, number_expected_for_submission_id_and_request_type_id, #previous_failed_requests?, #priority, #product_line, #project=, #project_id=, #request_type_updatable?, #return_pending_to_inbox!, #run_events, #source_labware, #study=, #study_id=, #submission_plate_count, #submitted_at, #target_purpose, #target_tube, #update_pool_information, #update_priority, #update_responsibilities!

Methods included from Request::Statistics

#asset_statistics, #progress_statistics, #sample_statistics_new

Methods included from EventfulRecord

#has_many_events, #has_many_lab_events, #has_one_event_with_family

Methods included from Metadata

#has_metadata

Methods included from Batch::RequestBehaviour

included, #recycle_from_batch!, #return_for_inbox!, #with_batch_id

Methods included from Request::Statemachine

#cancellable?, #change_decision!, #closed?, #failed_downstream!, #failed_upstream!, #finished?, #on_blocked, #on_cancelled, #on_failed, #on_hold, #on_passed, #open?, #terminated?, #transfer_aliquots

Methods included from StandardNamedScopes

included

Methods included from Commentable

#after_comment_addition

Methods included from AASM::Extensions

#transition_to

Methods included from Uuid::Uuidable

included, #unsaved_uuid!, #uuid

Methods included from Api::RequestIo::Extensions

included, #json_root

Methods included from Aliquot::DeprecatedBehaviours::Request

#tag, #tag_number

Methods inherited from ApplicationRecord

alias_association, convert_labware_to_receptacle_for, find_by_id_or_name, find_by_id_or_name!

Methods included from Squishify

extended

Class Method Details

.delegate_validatorObject



62
63
64
# File 'app/models/sequencing_request.rb', line 62

def self.delegate_validator
  SequencingRequest::RequestOptionsValidator
end

Instance Method Details

#concentrationObject



66
67
68
69
70
71
72
73
74
75
76
# File 'app/models/sequencing_request.rb', line 66

def concentration
  event = most_recent_event_named('Specify Dilution Volume')
  return ' ' if event.nil?

  concentration = event.descriptor_value('Concentration')
  return "#{concentration}μl" if concentration.present?

  dna = event.descriptor_value('DNA Volume')
  rsb = event.descriptor_value('RSB Volume')
  "#{dna}μl DNA in #{rsb}μl RSB"
end

#on_startedObject



38
39
40
41
42
# File 'app/models/sequencing_request.rb', line 38

def on_started
  super

  compound_samples_needed? ? transfer_aliquots_into_compound_sample_aliquots : transfer_aliquots
end

#order=(_) ⇒ Object



44
45
46
# File 'app/models/sequencing_request.rb', line 44

def order=(_)
  # Do nothing
end

#ready?Boolean

Returns true if a request is ready for batching

Returns:

  • (Boolean)


49
50
51
52
53
54
55
56
57
58
59
60
# File 'app/models/sequencing_request.rb', line 49

def ready? # rubocop:todo Metrics/CyclomaticComplexity
  # Reject any requests with missing or empty assets.
  # We use most tagged aliquot here, as its already loaded.
  return false if asset.nil? || asset.most_tagged_aliquot.nil?

  # Rejects any assets which haven't been scanned in
  return false if asset.scanned_in_date.blank?

  # It's ready if I don't have any lib creation requests or if all my lib creation requests are closed and
  # at least one of them is in 'passed' status
  upstream_requests.empty? || (upstream_requests.all?(&:closed?) && upstream_requests.any?(&:passed?))
end