Class: FlexibleSubmission

Inherits:
Order show all
Includes:
Submission::Crossable, Submission::FlexibleRequestGraph::OrderMethods
Defined in:
app/models/flexible_submission.rb

Overview

FlexibleSubmissions allow multiplexing based on pooling properties defined on the multiplexed request type

Direct Known Subclasses

AutomatedOrder

Constant Summary

Constants inherited from Order

Order::AssetTypeError, Order::DEFAULT_ASSET_INPUT_METHODS

Constants included from Submission::ProjectValidation

Submission::ProjectValidation::Error

Instance Attribute Summary

Attributes inherited from Order

#asset_input_methods, #info_differential, #input_field_infos, #request_type_ids_list

Instance Method Summary collapse

Methods included from Submission::Crossable

#cross_compatible?, #cross_project_allowed, #cross_study_allowed

Methods included from Submission::FlexibleRequestGraph::OrderMethods

#build_request_graph!

Methods inherited from Order

#add_comment, #all_assets, #all_samples, #asset_uuids, #assets=, #autodetection_default, #building?, #building_submission?, #collect_gigabases_expected?, #complete_building, #create_request_of_type!, #cross_compatible?, #cross_project_allowed, #cross_study_allowed, #duplicates_within, #first_request_type, #friendly_name, #generate_broadcast_event, #json_root, #multiplexed?, #multiplier_for, #next_request_type_id, #not_ready_samples, #on_delete_destroy_submission, render_class, #request_types_list, #samples, #sequencing_order?, #study_is_active, #subject_type

Methods included from Submission::AccessionBehaviour

#can_check_data_release_and_accession?, #check_data_release_and_accession_for_submission, included, #request_types_require_accessioning?

Methods included from Submission::RequestOptionsBehaviour

included, #request_options=

Methods included from Submission::ProjectValidation

#checking_project?, included, #save_after_unmarshalling, #submittable?, #validating?

Methods included from Submission::AssetGroupBehaviour

#complete_building_asset_group, included

Methods included from Uuid::Uuidable

included, #unsaved_uuid!, #uuid

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

Instance Method Details

#request_type_idsObject



13
14
15
# File 'app/models/flexible_submission.rb', line 13

def request_type_ids
  request_type_ids_list.map(&:first)
end

#request_type_ids=(id_list) ⇒ Object



9
10
11
# File 'app/models/flexible_submission.rb', line 9

def request_type_ids=(id_list)
  self.request_type_ids_list = id_list.map { |i| [i] }
end

#request_type_multiplier {|request_types.first.to_s.to_sym| ... } ⇒ Object

rubocop:todo Metrics/AbcSize

Yields:

  • (request_types.first.to_s.to_sym)


17
18
19
20
21
22
23
24
# File 'app/models/flexible_submission.rb', line 17

def request_type_multiplier # rubocop:todo Metrics/AbcSize
  return nil if request_types.blank?

  mxr = RequestType.where(id: request_types, for_multiplexing: true)
  mxr.find_each { |mx_request| yield(request_types[request_types.index(mx_request.id) + 1].to_s.to_sym) }
  yield(request_types.first.to_s.to_sym) if mxr.empty?
  nil
end