Sha256: c22ffd9d8b3caa90f624631fc87a05be7ec8bf97085fcf6193c173e0092c10c1

Contents?: true

Size: 1.98 KB

Versions: 54

Compression:

Stored size: 1.98 KB

Contents

# frozen_string_literal: true

require_dependency "renalware/letters"

module Renalware
  module Letters
    class ListsController < Letters::BaseController
      include Renalware::Concerns::Pageable

      # rubocop:disable Metrics/MethodLength
      # TODO: Use a presenter here
      def show
        named_filter = params.fetch(:named_filter, "all").to_sym
        form = form_for(named_filter)
        query = LetterQuery.new(q: form.attributes)
        letters = find_and_authorize_letters(query)

        q = query.search

        locals = {
          letters: letters,
          q: q,
          form: form_for(named_filter)
        }

        # Could pass back a batchprint summary
        # {
        #   count: 123,
        #   excluded_enc: 3
        # }
        respond_to do |format|
          format.html { render(locals: locals) }
          format.js   { render(locals: locals, layout: false) }
        end
      end
      # rubocop:enable Metrics/MethodLength

      private

      def form_for(named_filter)
        Lists::Form.new(named_filter: named_filter, params: filter_parameters)
      end

      def find_and_authorize_letters(query)
        collection = call_query(query).page(page).per(per_page)
        present_letters(collection).tap { |letters| authorize letters }
      end

      def present_letters(letters)
        CollectionPresenter.new(letters, LetterPresenterFactory)
      end

      def call_query(query)
        query
          .call
          .with_patient
          .with_main_recipient
          .with_letterhead
          .with_author
          .with_created_by
      end

      # These are used also when creating a batch.
      def filter_parameters
        return {} unless params.key?(:q)

        params
          .require(:q)
          .permit(
            :enclosures_present,
            :state_eq,
            :author_id_eq,
            :created_by_id_eq,
            :letterhead_id_eq,
            :page_count_in_array,
            :s
          )
      end
    end
  end
end

Version data entries

54 entries across 54 versions & 1 rubygems

Version Path
renalware-core-2.0.167 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.166 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.165 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.164 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.163 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.162 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.161 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.160 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.159 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.158 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.157 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.156 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.155 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.153 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.152 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.151 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.149 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.148 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.147 app/controllers/renalware/letters/lists_controller.rb
renalware-core-2.0.146 app/controllers/renalware/letters/lists_controller.rb