Sha256: f80ec00fa47bb142208f2d501f8b2e87fdbecbe7567de9454d551a28c96867c6

Contents?: true

Size: 1.19 KB

Versions: 10

Compression:

Stored size: 1.19 KB

Contents

class FeaturedWorkList
  include ActiveModel::Model

  def featured_works_attributes=(attributes_collection)
    attributes_collection = attributes_collection.sort_by { |i, _| i.to_i }.map { |_, attributes| attributes } if attributes_collection.is_a? Hash
    attributes_collection.each do |attributes|
      attributes = attributes.with_indifferent_access
      raise "Missing id" if attributes['id'].blank?
      existing_record = FeaturedWork.find(attributes['id'])
      existing_record.update(attributes.except('id'))
    end
  end

  delegate :query, :construct_query_for_pids, to: ActiveFedora::SolrService

  def featured_works
    return @works if @works
    @works = FeaturedWork.all
    add_solr_document_to_works
    @works
  end

  private
    def add_solr_document_to_works
      solr_docs.each do |doc|
        work_with_pid(doc['id']).generic_file_solr_document = SolrDocument.new(doc)
      end
    end

    def pids
      @works.pluck(:generic_file_id).map { |noid| Sufia::Noid.namespaceize(noid) }
    end

    def solr_docs
      query(construct_query_for_pids(pids))
    end

    def work_with_pid(pid)
      @works.find { |w| Sufia::Noid.namespaceize(w.generic_file_id) == pid}
    end
  
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
sufia-4.2.0 app/models/featured_work_list.rb
sufia-4.1.0 app/models/featured_work_list.rb
sufia-4.0.1 app/models/featured_work_list.rb
sufia-4.0.0 app/models/featured_work_list.rb
sufia-4.0.0.rc2 app/models/featured_work_list.rb
sufia-4.0.0.rc1 app/models/featured_work_list.rb
sufia-4.0.0.beta4 app/models/featured_work_list.rb
sufia-4.0.0.beta3 app/models/featured_work_list.rb
sufia-4.0.0.beta2 app/models/featured_work_list.rb
sufia-4.0.0.beta1 app/models/featured_work_list.rb