Sha256: b107011aab41785ef69770df401655df5a76d6dca1d315eaf602aacc448ce5ad

Contents?: true

Size: 1.02 KB

Versions: 23

Compression:

Stored size: 1.02 KB

Contents

module CurationConcerns
  module Actors
    class AddToWorkActor < AbstractActor
      def create(attributes)
        work_ids = attributes.delete(:in_works_ids)
        next_actor.create(attributes) && add_to_works(work_ids)
      end

      def update(attributes)
        work_ids = attributes.delete(:in_works_ids)
        add_to_works(work_ids) && next_actor.update(attributes)
      end

      private

        def add_to_works(new_work_ids)
          return true if new_work_ids.nil?
          (curation_concern.in_works_ids - new_work_ids).each do |old_id|
            work = ::ActiveFedora::Base.find(old_id)
            work.ordered_members.delete(curation_concern)
            work.members.delete(curation_concern)
            work.save
          end

          # add to new
          (new_work_ids - curation_concern.in_works_ids).each do |work_id|
            work = ::ActiveFedora::Base.find(work_id)
            work.ordered_members << curation_concern
            work.save
          end
          true
        end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
curation_concerns-1.7.4 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.7.3 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.7.2 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-2.0.0.rc1 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.7.1 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.7.0 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.7.0.beta1 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.6.3 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.6.2 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.6.1 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.6.0 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.5.0 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.4.0 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.3.3 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.3.2 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.3.1 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.3.0 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.2.0 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.1.2 app/actors/curation_concerns/actors/add_to_work_actor.rb
curation_concerns-1.1.1 app/actors/curation_concerns/actors/add_to_work_actor.rb