Sha256: 63de9d9cfbcc0215ccd953e28c98eceb96d96ef0933dceba000d2613afe9aab1

Contents?: true

Size: 1.39 KB

Versions: 37

Compression:

Stored size: 1.39 KB

Contents

module CurationConcerns
  module Actors
    class AttachFilesActor < AbstractActor
      def create(attributes)
        files = [attributes.delete(:files)].flatten.compact
        attach_files(files, visibility_attributes(attributes)) &&
          next_actor.create(attributes)
      end

      def update(attributes)
        files = [attributes.delete(:files)].flatten.compact
        next_actor.update(attributes) &&
          attach_files(files, visibility_attributes(attributes))
      end

      private

        def attach_files(files, visibility_attr)
          files.all? do |file|
            attach_file(file, visibility_attr)
          end
        end

        def attach_file(file, visibility_attr)
          file_set = ::FileSet.new
          file_set_actor = CurationConcerns::Actors::FileSetActor.new(file_set, user)
          file_set_actor.create_metadata(curation_concern, visibility_attr)
          file_set_actor.create_content(file)
        end

        # The attributes used for visibility - used to send as initial params to
        # created FileSets.
        def visibility_attributes(attributes)
          attributes.slice(:visibility, :visibility_during_lease,
                           :visibility_after_lease, :lease_expiration_date,
                           :embargo_release_date, :visibility_during_embargo,
                           :visibility_after_embargo)
        end
    end
  end
end

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
curation_concerns-1.7.8 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-1.7.7 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-2.0.0 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-2.0.0.rc2 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-1.7.6 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-1.7.5 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-1.7.4 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-1.7.3 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-1.7.2 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-2.0.0.rc1 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-1.7.1 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-1.7.0 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-1.7.0.beta1 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-1.6.3 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-1.6.2 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-1.6.1 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-1.6.0 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-1.5.0 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-1.4.0 app/actors/curation_concerns/actors/attach_files_actor.rb
curation_concerns-1.3.3 app/actors/curation_concerns/actors/attach_files_actor.rb