Sha256: 48c78b7f46053b8e16cbb22f6e30514679201b2dd6bf641b713858e770dd5456

Contents?: true

Size: 1.14 KB

Versions: 4

Compression:

Stored size: 1.14 KB

Contents

# frozen_string_literal: true

module Lcms
  module Engine
    class ResourceInstructionSerializer < ActiveModel::Serializer
      include ResourceHelper

      self.root = false

      attributes :id, :title, :subject, :teaser, :path, :img, :instruction_type,
                 :grade_avg, :time_to_teach

      def title
        return object.title if media?

        type_name = I18n.t("resource_types.#{object.resource_type}")
        object.grades.present? ? "#{object.grades.to_str} #{type_name}" : type_name
      end

      def subject
        object.subject.try(:downcase) || 'default'
      end

      def teaser
        object.title
      end

      def path
        media? ? media_path(object.id) : generic_path(object)
      end

      def img
        object.try(:image_file).try(:url) || placeholder
      end

      def instruction_type
        media? ? object.resource_type : :generic
      end

      def grade_avg
        object.grades.average
      end

      private

      def media?
        object.media?
      end

      def placeholder
        ActionController::Base.helpers.image_path('resource_placeholder.jpg')
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
lcms-engine-0.1.4 app/serializers/lcms/engine/resource_instruction_serializer.rb
lcms-engine-0.1.3 app/serializers/lcms/engine/resource_instruction_serializer.rb
lcms-engine-0.1.2 app/serializers/lcms/engine/resource_instruction_serializer.rb
lcms-engine-0.1.0 app/serializers/lcms/engine/resource_instruction_serializer.rb