Skip to content
Snippets Groups Projects
learning_object_builder.rb 1.73 KiB
Newer Older
class LearningObjectBuilder
  def self.build_from_dspace(item)
    lo = LearningObject.new(
        name: item.name,
        id_dspace: item.id,
        thumbnail: nil,
        metadata: item.metadata.map(&:to_h)
    institution = lo.get_metadata_values_of('dc.creator').first
    institution = 'Desconhecido' if institution.blank?
    lo.publisher = Institution.where(name: institution).first_or_create

    object_type = lo.get_metadata_value_of('dc.type')
    object_type = 'Desconhecido' if object_type.blank?
    lo.object_type = ObjectType.where(name: object_type).first_or_create
    date = lo.get_metadata_value_of('dc.date.issued')
    lo.published_at = Time.iso8601(date) unless date.nil?
    code = lo.get_metadata_value_of('dc.language')
    code = 'pt' if code.blank?
    language = Language.where(code: code).first
    language = Language.create(name: code, code: code) if language.nil?
    lo.language = language

    lo.author = lo.get_metadata_values_of('dc.contributor.author').join(', ')
    lo.description = lo.get_metadata_value_of('dc.description')

  def self.build_form_params(params={}, publisher = nil)
    _params = params.clone
    _params.delete :link

    # build tags
    _params[:tags] = []
    params[:tags].try(:each) do |t|
      _params[:tags] << Tag.find(t['id'])
    end

    #build language
    _params[:language] = Language.find(params[:language]) if params[:language].to_i > 0

    # set publisher
    _params[:publisher] = publisher unless publisher.nil?
    _params
  end

 # private

  #def self.sanitize_form_metadata(params={})
  #  if !params[:link].blank?
  #    metadata = [{'key' => 'dc.object.url', 'value' => params[:link]}]
  #    _args.merge(metadata: metadata)
  #  end
  #  _args
  # end