# frozen_string_literal: true

module Api
  module V1
    class ProtocolSerializer < ActiveModel::Serializer
      include ApplicationHelper
      include ActionView::Helpers::TextHelper
      include InputSanitizeHelper

      type :protocols
      attributes :id, :name, :authors, :description, :protocol_type
      has_many :protocol_keywords,
               key: :keywords,
               serializer: ProtocolKeywordSerializer,
               class_name: 'ProtocolKeyword',
               unless: -> { object.protocol_keywords.blank? }
      has_many :steps, serializer: StepSerializer, if: -> { object.steps.any? }
      belongs_to :parent, serializer: ProtocolSerializer, if: -> { object.parent.present? }
      has_many :linked_my_modules,
               key: :linked_tasks,
               serializer: TaskSerializer,
               class_name: 'MyModule',
               if: -> { object.in_repository_published? }

      include TimestampableModel

      def description
        if instance_options[:rte_rendering]
          custom_auto_link(object.tinymce_render(:description),
                           simple_format: false,
                           tags: %w(img),
                           team: instance_options[:team])
        else
          object.description
        end
      end
    end
  end
end