diff --git a/app/models/concerns/complainable.rb b/app/models/concerns/complainable.rb index 72875e02eaaa82d859286be866950df189ee230c..52fe06422e0589135afcf375f349d5ae44badd81 100644 --- a/app/models/concerns/complainable.rb +++ b/app/models/concerns/complainable.rb @@ -4,4 +4,9 @@ module Complainable included do has_many :complaints, as: :complainable end + + def complained?(user) + !complaints.where(user: user).blank? + end + end diff --git a/app/models/concerns/reviewable.rb b/app/models/concerns/reviewable.rb index a125c93e8c0eb3f0b46cc346ecc9efd6d3f76133..27875b9253f266253af25b4bfcab88b8cd597bcc 100644 --- a/app/models/concerns/reviewable.rb +++ b/app/models/concerns/reviewable.rb @@ -5,6 +5,10 @@ module Reviewable has_many :reviews, as: :reviewable, dependent: :destroy end + def reviewed?(user) + !reviews.where(user: user).blank? + end + def review_ratings_average array = reviews.map(&:rating_average) return 0.0 if array.size.zero? diff --git a/app/serializers/collection_min_serializer.rb b/app/serializers/collection_min_serializer.rb index 4dbb788e9d7f74626792a3cecf90abcfbce0b786..93fd70127987d425aebb76a7c994970a54221957 100644 --- a/app/serializers/collection_min_serializer.rb +++ b/app/serializers/collection_min_serializer.rb @@ -1,12 +1,19 @@ class CollectionMinSerializer < ActiveModel::Serializer - cache key: 'collection', expires_in: 4.hours, except: [:likes_count, :liked] + cache key: 'collection', expires_in: 4.hours, except: [:likes_count, :liked, :reviewed, :complained] def liked object.liked? current_user end + def reviewed + object.reviewed? current_user + end + + def complained + object.complained? current_user + end - attributes :id, :name, :owner, :created_at, :updated_at, :description, :privacy, :score, :likes_count, :liked, :review_average, :thumbnail + attributes :id, :name, :owner, :created_at, :updated_at, :description, :privacy, :score, :likes_count, :liked, :reviewed, :complained :review_average, :thumbnail has_many :tags has_many :subjects has_many :educational_stages diff --git a/app/serializers/collection_serializer.rb b/app/serializers/collection_serializer.rb index ef5a2dedccce4860bb56f5c4946bef1d7e2cc562..6df8b10ccd32c6d01dc33371e5284fe073100cea 100644 --- a/app/serializers/collection_serializer.rb +++ b/app/serializers/collection_serializer.rb @@ -1,11 +1,19 @@ class CollectionSerializer < ActiveModel::Serializer - cache key: 'collection', expires_in: 4.hours, except: [:likes_count, :liked] + cache key: 'collection', expires_in: 4.hours, except: [:likes_count, :liked, :reviewed, :complained] def liked object.liked? current_user end - attributes :id, :name, :owner, :created_at, :updated_at, :description, :privacy, :score, :likes_count, :liked, :review_average, :thumbnail + def reviewed + object.reviewed? current_user + end + + def complained + object.complained? current_user + end + + attributes :id, :name, :owner, :created_at, :updated_at, :description, :privacy, :score, :likes_count, :liked, :reviewed, :complained, :review_average, :thumbnail has_many :tags has_many :subjects has_many :educational_stages diff --git a/app/serializers/learning_object_serializer.rb b/app/serializers/learning_object_serializer.rb index 226a77f8524c9f4f655f6c7ded8a0ea7d7fd3445..131f2278481ab30987cfcbac083e4c64c1e93a11 100644 --- a/app/serializers/learning_object_serializer.rb +++ b/app/serializers/learning_object_serializer.rb @@ -1,5 +1,5 @@ class LearningObjectSerializer < ActiveModel::Serializer - cache key: 'learning_object', expires_in: 4.hours, except: [:likes_count, :liked] + cache key: 'learning_object', expires_in: 4.hours, except: [:likes_count, :liked, :reviewed, :complained] def default_location object_type == ("VÃdeo" || "Ãudio") ? object.default_attachment.try(:retrieve_cache_link) : object.default_attachment.try(:retrieve_url) @@ -25,6 +25,14 @@ class LearningObjectSerializer < ActiveModel::Serializer object.liked? current_user end + def reviewed + object.reviewed? current_user + end + + def complained + object.complained? current_user + end + attributes :id, :name, :description, @@ -44,6 +52,8 @@ class LearningObjectSerializer < ActiveModel::Serializer :license, :liked, :likes_count, + :reviewed, + :complained, :shares_count, :created_at, :updated_at diff --git a/app/serializers/user_serializer.rb b/app/serializers/user_serializer.rb index 151abb94338cdca865403115ce1bcdfa02be9f44..4fa94f9131c6935872331ea7a582c4f83bf7a4f4 100644 --- a/app/serializers/user_serializer.rb +++ b/app/serializers/user_serializer.rb @@ -1,4 +1,9 @@ class UserSerializer < ActiveModel::Serializer - cache key: 'user', expires_in: 4.hours - attributes :id, :email, :provider, :name, :description, :role_ids, :institution_ids, :avatar, :likes_count, :follows_count, :learning_objects_count, :collections_count, :created_at, :updated_at + cache key: 'user', expires_in: 4.hours, except: [ :complained ] + + def complained + object.complained? current_user + end + + attributes :id, :email, :provider, :name, :description, :role_ids, :institution_ids, :avatar, :likes_count, :complained, :follows_count, :learning_objects_count, :collections_count, :created_at, :updated_at end