Sha256: e9a33ffc6f729f163224ab33be762a82996bd633353acda7ca5c62faac7733f0

Contents?: true

Size: 1.85 KB

Versions: 14

Compression:

Stored size: 1.85 KB

Contents

# frozen_string_literal: true

module Decidim
  module Comments
    module Metrics
      # Searches for Participants in the following actions
      #  - Leave a comment (Comments)
      class CommentParticipantsMetricMeasure < Decidim::MetricMeasure
        def valid?
          super && @resource.is_a?(Decidim::Participable)
        end

        def calculate
          cumulative_users = []
          quantity_users = []

          retrieve_comments_for_organization.each do |comment|
            related_object = comment.root_commentable
            next unless related_object
            next unless check_participatory_space(@resource, related_object)

            cumulative_users << comment.decidim_author_id
            quantity_users << comment.decidim_author_id if comment.created_at >= start_time
          end
          {
            cumulative_users: cumulative_users.uniq,
            quantity_users: quantity_users.uniq
          }
        end

        private

        def check_participatory_space(participatory_space, related_object)
          return related_object.participatory_space == participatory_space if related_object.respond_to?(:participatory_space)
          return related_object == participatory_space if related_object.is_a?(Decidim::Participable)

          false
        end

        def retrieve_comments_for_organization
          user_ids = Decidim::User.where(organization: @resource.organization).pluck(:id)
          Decidim::Comments::Comment.includes(:root_commentable).not_hidden
                                    .where("decidim_comments_comments.created_at <= ?", end_time)
                                    .where("decidim_comments_comments.decidim_author_id IN (?)", user_ids)
                                    .where("decidim_comments_comments.decidim_author_type IN (?)", "Decidim::UserBaseEntity")
        end
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
decidim-comments-0.23.6 app/queries/decidim/comments/metrics/comment_participants_metric_measure.rb
decidim-comments-0.23.5 app/queries/decidim/comments/metrics/comment_participants_metric_measure.rb
decidim-comments-0.23.4 app/queries/decidim/comments/metrics/comment_participants_metric_measure.rb
decidim-comments-0.23.3 app/queries/decidim/comments/metrics/comment_participants_metric_measure.rb
decidim-comments-0.23.2 app/queries/decidim/comments/metrics/comment_participants_metric_measure.rb
decidim-comments-0.23.1 app/queries/decidim/comments/metrics/comment_participants_metric_measure.rb
decidim-comments-0.23.1.rc1 app/queries/decidim/comments/metrics/comment_participants_metric_measure.rb
decidim-comments-0.23.0 app/queries/decidim/comments/metrics/comment_participants_metric_measure.rb
decidim-comments-0.22.0 app/queries/decidim/comments/metrics/comment_participants_metric_measure.rb
decidim-comments-0.21.0 app/queries/decidim/comments/metrics/comment_participants_metric_measure.rb
decidim-comments-0.20.1 app/queries/decidim/comments/metrics/comment_participants_metric_measure.rb
decidim-comments-0.20.0 app/queries/decidim/comments/metrics/comment_participants_metric_measure.rb
decidim-comments-0.19.1 app/queries/decidim/comments/metrics/comment_participants_metric_measure.rb
decidim-comments-0.19.0 app/queries/decidim/comments/metrics/comment_participants_metric_measure.rb