Module: BroadcastEvent::Helpers::ExternalSubjects
- Included in:
- PlateCherrypicked
- Defined in:
- app/models/broadcast_event/helpers/external_subjects.rb
Overview
Provides support to define subjects that are referring to data stored externally to Sequencescape. The subjects will be built from the properties attribute, instead of the default BroadcastEvent procedure
Instance Method Summary collapse
- #build_subjects ⇒ Object
- #check_subject_role_type(property, role_type) ⇒ Object
- #subjects ⇒ Object
- #subjects_with_role_type(role_type) ⇒ Object
- #subjects_with_role_type?(role_type) ⇒ Boolean
Instance Method Details
#build_subjects ⇒ Object
13 14 15 16 17 18 |
# File 'app/models/broadcast_event/helpers/external_subjects.rb', line 13 def build_subjects properties[:subjects].map do |prop| obj = OpenStruct.new(prop) # rubocop:todo Style/OpenStructUse BroadcastEvent::SubjectHelpers::Subject.new(obj.role_type, obj) end end |
#check_subject_role_type(property, role_type) ⇒ Object
28 29 30 31 32 |
# File 'app/models/broadcast_event/helpers/external_subjects.rb', line 28 def check_subject_role_type(property, role_type) unless subjects_with_role_type?(role_type) errors.add(property, "is a required subject needed for the event '#{event_type}'") end end |
#subjects ⇒ Object
7 8 9 10 11 |
# File 'app/models/broadcast_event/helpers/external_subjects.rb', line 7 def subjects return [] unless properties&.key?(:subjects) @subjects ||= build_subjects end |
#subjects_with_role_type(role_type) ⇒ Object
20 21 22 |
# File 'app/models/broadcast_event/helpers/external_subjects.rb', line 20 def subjects_with_role_type(role_type) subjects.select { |sub| sub.role_type == role_type } end |
#subjects_with_role_type?(role_type) ⇒ Boolean
24 25 26 |
# File 'app/models/broadcast_event/helpers/external_subjects.rb', line 24 def subjects_with_role_type?(role_type) subjects.any? { |sub| sub.role_type == role_type } end |