Sha256: e6ddce43c9f498c2670be9ef9b66b91d0512e0723494d7d07ebc7af46b653b5a

Contents?: true

Size: 1.71 KB

Versions: 26

Compression:

Stored size: 1.71 KB

Contents

# frozen_string_literal: true

module Decidim
  module Debates
    #
    # Decorator for debates
    #
    class DebatePresenter < Decidim::ResourcePresenter
      include Decidim::TranslationsHelper
      include Decidim::ResourceHelper
      include Decidim::SanitizeHelper
      include ActionView::Helpers::DateHelper

      def debate
        __getobj__
      end

      def author
        @author ||= if official?
                      Decidim::Debates::OfficialAuthorPresenter.new
                    elsif user_group
                      Decidim::UserGroupPresenter.new(user_group)
                    else
                      Decidim::UserPresenter.new(super)
                    end
      end

      def title(links: false, all_locales: false, html_escape: false)
        return unless debate

        super debate.title, links, html_escape, all_locales
      end

      def description(strip_tags: false, extras: true, links: false, all_locales: false)
        return unless debate

        content_handle_locale(debate.description, all_locales, extras, links, strip_tags)
      end

      def last_comment_at
        return unless debate.last_comment_at

        time_ago_in_words(debate.last_comment_at)
      end

      def last_comment_by
        debate.last_comment_by&.presenter
      end

      def participants_count
        comments_authors.count do |author|
          author.is_a?(Decidim::User)
        end
      end

      def groups_count
        comments_authors.count do |author|
          author.is_a?(Decidim::UserGroup)
        end
      end

      private

      def comments_authors
        @comments_authors ||= debate.comments.includes(:author, :user_group).map(&:normalized_author).uniq
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
decidim-debates-0.29.2 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.28.5 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.29.1 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.28.4 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.27.9 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.29.0 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.28.3 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.27.8 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.29.0.rc4 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.29.0.rc3 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.29.0.rc2 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.29.0.rc1 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.28.2 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.27.7 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.28.1 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.27.6 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.26.10 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.26.9 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.28.0 app/presenters/decidim/debates/debate_presenter.rb
decidim-debates-0.27.5 app/presenters/decidim/debates/debate_presenter.rb