diff --git a/app/models/user.rb b/app/models/user.rb index 8e9bc581280d71a08681b41ea3e04f17039f5d57..2b6fdd7ff8a447267b13fcd8117ff5aed621ce43 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -18,14 +18,33 @@ # When devise create user, the active record hooks will sync with user repository # And, when the application call the user repository, it will keep sync with active record user model class User < ActiveRecord::Base + include RepositoriesProxy + # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable has_and_belongs_to_many :roles + after_create SyncUserRepositoryService.new after_destroy SyncUserRepositoryService.new - has_attached_file :avatar, styles: { medium: "300x300>", thumb: "60x60>" }, default_url: lambda { |image| ActionController::Base.helpers.asset_path('user-anon.png') } + after_create CreateUserBookmarksService.new + after_destroy CreateUserBookmarksService.new + + has_attached_file :avatar, styles: {medium: "300x300>", thumb: "60x60>"}, default_url: lambda { |image| ActionController::Base.helpers.asset_path('user-anon.png') } validates_attachment_content_type :avatar, content_type: /\Aimage\/.*\Z/ + + def collections + collection_repository.all self + end + + def bookmarks + collection_repository.bookmarks self + end + + def learning_objects + learning_object_repository.all self + end + end diff --git a/app/repositories/orient_db/collection_repository.rb b/app/repositories/orient_db/collection_repository.rb index 5082f6b7bf5b96ca8b66bc6c3fe00f34fbdf7a90..dadf63ac157daa2bce1f6112a15ca3778a595e41 100644 --- a/app/repositories/orient_db/collection_repository.rb +++ b/app/repositories/orient_db/collection_repository.rb @@ -17,15 +17,35 @@ module OrientDb end end + def destroy_bookmarks_collection(user) + bookmarks = Bookmarks.new(owner: user) + + if has_bookmarks?(user) + destroy bookmarks + end + end + def create(object) super(object) - - # the collection belongs to user create_edge "BelongsTo", object.id, object.owner.rid end + def destroy(object) + super(object) + destroy_edge "BelongsTo", object.id, object.owner.rid + end + def all(user) - [] + [Collection.new(name: 'Aula fÃsica quantica - turma b', owner: user), + Collection.new(name: 'Aula segunda lei de newton - turma a', owner: user)] + end + + def bookmarks(user) + Bookmarks.new(owner: user) + end + + def has_bookmarks?(user) + false end private diff --git a/app/repositories/orient_db/learning_object_repository.rb b/app/repositories/orient_db/learning_object_repository.rb index 8220c254c5474cd156e0059ee831e7bc176d10f8..50ee87a2dc3b572a77823e202f7b723c88915b28 100644 --- a/app/repositories/orient_db/learning_object_repository.rb +++ b/app/repositories/orient_db/learning_object_repository.rb @@ -60,6 +60,11 @@ module OrientDb build_object result.first end + def all(user) + result = select_by_property(odb_class, "p_id", user.id) + build_objects result + end + def get_subjects(learning_object) result = get_edges_end("IsAbout", "out", learning_object.id) subject_repository.build_objects(result) diff --git a/app/services/create_user_bookmarks_service.rb b/app/services/create_user_bookmarks_service.rb new file mode 100644 index 0000000000000000000000000000000000000000..588df67d83fa382fac0dd6b5f5a033690e160a89 --- /dev/null +++ b/app/services/create_user_bookmarks_service.rb @@ -0,0 +1,12 @@ +class CreateUserBookmarksService + include RepositoriesProxy + + def after_create(user) + collection_repository.create_bookmarks_collection user + end + + def after_destroy(user) + collection_repository.destroy_bookmarks_collection user + end + +end \ No newline at end of file