Forked from
PortalMEC / portalmec
2551 commits behind the upstream repository.
-
Lucas Ernesto Kindinger authored
Signed-off-by:
Lucas Ernesto Kindinger <lek@dinf.ufpr.br>
Lucas Ernesto Kindinger authoredSigned-off-by:
Lucas Ernesto Kindinger <lek@dinf.ufpr.br>
learning_object.rb 2.36 KiB
class LearningObject
include ActiveModel::Model
include RepositoriesProxy
include OrientDbSerializable
attr_accessor :id, :id_dspace, :rid, :name, :author, :description,
:published_at, :thumbnail, :created_at, :last_modified,
:type, :grade_level, :bitstreams, :metadata, :likes, :views,
:downloads, :subjects, :attributes, :score, :publisher,
:school_level, :language, :source, :license, :copyright,
:country, :keywords, :file,
:grade_level, :attachment, :main_bitstream_id,
# Relation attrs
:likes, :views, :downloads, :subjects, :attributes, :publisher
validates_presence_of :name, :created_at, :type
delegate :get_retrievelink, to: :attachment
delegate :get_filename, to: :attachment
def initialize(params={})
super(params.merge(defaults))
end
def collections
collection_repository.find_by_learning_object self
end
def publisher
@publisher ||= learning_object_repository.get_publisher(self)
end
def subjects
@subjects ||= learning_object_repository.get_subjects(self)
end
def attributes
@attributes ||= learning_object_repository.get_attributes(self)
end
def categories
get_metadata_value_of 'dc.subject.category'
end
## social actions
def like(user)
learning_object_repository.like user, self
end
def liked?(user)
learning_object_repository.liked? user, self
end
def dislike(user)
learning_object_repository.dislike user, self
end
def download(user)
learning_object_repository.download user, self
end
## end social actions
## metadata methods
def get_metadata_value_of key
get_metadata_values_of(key).first
end
def get_metadata_values_of key
values = []
@metadata.each do |m|
m = m.with_indifferent_access
values << m["value"] if m["key"] == key
end
values
end
## end metadata methods
def likes
learning_object_repository.count_likes(self)
end
def views
learning_object_repository.count_views(self)
end
def to_orientdb_hash
super.merge({'bitstreams' => attachment.bitstreams})
end
def excluded_orientdb_properties
['likes', 'views', 'downloads', 'subjects', 'attributes', 'publisher', 'attachment']
end
private
def defaults
{
downloads: 0,
score: 0
}
end
end