Module: Ecoportal::API::GraphQL::Base::ContractorEntity::MemberChanges
- Included in:
- Ecoportal::API::GraphQL::Base::ContractorEntity
- Defined in:
- lib/ecoportal/api/graphql/base/contractor_entity/member_changes.rb
Overview
Convenience mutators over the read-model associatedPeopleIds / leadContractorIds
arrays. They push/delete plain ids so that Input::ContractorEntity::Update.from_model
can later emit the IdDiff (additions/removals) against original_doc.
Instance Method Summary collapse
-
#associate(*values, lead: false) ⇒ Object
Associates one or more people.
-
#disassociate(*values) ⇒ Object
(also: #dissassociate)
Disassociates one or more people (also removing them as leads).
-
#lead!(*values) ⇒ Object
Marks one or more people as lead contractors (associating them if not already).
-
#unlead!(*values) ⇒ Object
Removes one or more people from the lead contractors list.
Instance Method Details
#associate(*values, lead: false) ⇒ Object
Associates one or more people. When lead: true, also marks them as leads.
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/ecoportal/api/graphql/base/contractor_entity/member_changes.rb', line 13 def associate(*values, lead: false) ids = to_person_ids(*values) associatedPeopleIds.tap do |associated| associated.push!(*ids) next unless lead lead!(*ids) end end |
#disassociate(*values) ⇒ Object Also known as: dissassociate
Disassociates one or more people (also removing them as leads).
26 27 28 29 30 31 32 33 |
# File 'lib/ecoportal/api/graphql/base/contractor_entity/member_changes.rb', line 26 def disassociate(*values) ids = to_person_ids(*values) associatedPeopleIds.tap do |associated| unlead!(*ids) associated.delete!(*ids) end end |
#lead!(*values) ⇒ Object
Marks one or more people as lead contractors (associating them if not already).
38 39 40 41 42 43 44 45 |
# File 'lib/ecoportal/api/graphql/base/contractor_entity/member_changes.rb', line 38 def lead!(*values) ids = to_person_ids(*values) leadContractorIds.tap do |leads| associate(*ids) leads.push!(*ids) end end |
#unlead!(*values) ⇒ Object
Removes one or more people from the lead contractors list.
48 49 50 51 52 53 54 |
# File 'lib/ecoportal/api/graphql/base/contractor_entity/member_changes.rb', line 48 def unlead!(*values) ids = to_person_ids(*values) leadContractorIds.tap do |leads| leads.delete!(*ids) end end |