Class: WorkCompletion::TubeRackCompletion

Inherits:
LabwareCompletion show all
Defined in:
app/models/work_completion/tube_rack_completion.rb

Overview

Class WorkCompletion::TubeRackCompletion provides the business logic for passing tubes within a tube rack, especially in the Limber pipelines. This has been pulled out of WorkCompletion itself to allow for separate behaviour for tube racks.

Author:

  • Genome Research Ltd.

Instance Attribute Summary

Attributes inherited from LabwareCompletion

#order_ids, #submission_ids, #target_labware, #work_completion

Instance Method Summary collapse

Methods inherited from LabwareCompletion

#fire_events, #initialize, #pass_and_link_up_requests, #process

Constructor Details

This class inherits a constructor from WorkCompletion::LabwareCompletion

Instance Method Details

#connect_requestsvoid

This method returns an undefined value.

Connects upstream requests to the target labware's racked tubes.

Iterates through each upstream request and links it to the receptacle of each tube in the target labware's racked tubes.

Examples:

connect_requests
  # => Connects upstream requests to the target tubes' receptacles


21
22
23
24
25
# File 'app/models/work_completion/tube_rack_completion.rb', line 21

def connect_requests
  target_tubes.each do |target_tube|
    detect_upstream_requests.each { |upstream| pass_and_link_up_requests(target_tube.tube.receptacle, upstream) }
  end
end

#detect_upstream_requestsActiveRecord::Relation

Detects upstream customer requests associated with the target labware.

Queries the database for customer requests linked to the aliquots of the target labware.

Examples:

detect_upstream_requests
# => [#<CustomerRequest id: 1>, #<CustomerRequest id: 2>]

Returns:

  • (ActiveRecord::Relation)

    A collection of customer requests.



59
60
61
# File 'app/models/work_completion/tube_rack_completion.rb', line 59

def detect_upstream_requests
  target_labware.in_progress_requests.includes(WorkCompletion::REQUEST_INCLUDES)
end

#target_tubesActiveRecord::Relation

Note:

This method is similar to the target_wells method in WorkCompletion::PlateCompletion,

Retrieves the target tubes associated with the target labware.

This method fetches the tubes that are racked within the target labware (i.e., tube rack), including their associated aliquots and requests. It filters the tubes based on the submission IDs of the requests.

Examples:

target_tubes
# => [#<Tube id: 1>, #<Tube id: 2>]

Returns:

  • (ActiveRecord::Relation)

    A collection of target tubes.



41
42
43
44
45
46
47
# File 'app/models/work_completion/tube_rack_completion.rb', line 41

def target_tubes
  @target_tubes ||=
    target_labware
      .racked_tubes
      .includes(tube: { aliquots: { request: WorkCompletion::REQUEST_INCLUDES } })
      .where(requests: { submission_id: submission_ids })
end