Sha256: 395c687d584ef59dfe15a6522e5a81dd92c3a628efcdc2d3f81d0dc358f78878

Contents?: true

Size: 1.93 KB

Versions: 3

Compression:

Stored size: 1.93 KB

Contents

require_dependency "renalware/messaging"

module Renalware
  module Messaging
    class MessagesController < BaseController
      include Renalware::Concerns::Pageable
      include PresenterHelper

      def sent
        messages = author.messages.page(page).per(per_page)
        authorize messages
        render locals: { messages: present(messages, Messaging::InternalMessagePresenter) }
      end

      def new
        authorize Message, :new?
        form = MessageFormBuilder.new(patient: patient, params: params).call
        render_new(form)
      end

      def create
        authorize Message, :create?
        form = MessageForm.new(message_params)

        if form.valid?
          message = SendMessage.call(author: author, patient: patient, form: form)
          flash.now[:notice] = "Message was successfully sent"
          render_create(message)
        else
          render_new(form)
        end
      end

      private

      def message_we_are_replying_to(message)
        return if message.replying_to_message_id.blank?
        InternalMessagePresenter.new(message.replying_to_message)
      end

      def render_new(form)
        render :new,
                locals: {
                  form: form,
                  recipient_options: RecipientOptions.new(patient, current_user).to_a,
                  patient: patient
                },
                layout: false
      end

      def render_create(message)
        render locals: {
          message: InternalMessagePresenter.new(message),
          original_message: message_we_are_replying_to(message)
        }
      end

      def author
        Messaging.cast_author(current_user)
      end

      def patient
        Messaging.cast_patient(Patient.find(params[:patient_id]))
      end

      def message_params
        params
          .require(:messaging_message_form)
          .permit(:subject, :body, :urgent, :replying_to_message_id, recipient_ids: [])
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
renalware-core-2.0.0.pre.beta7 app/controllers/renalware/messaging/messages_controller.rb
renalware-core-2.0.0.pre.beta6 app/controllers/renalware/messaging/messages_controller.rb
renalware-core-2.0.0.pre.beta5 app/controllers/renalware/messaging/messages_controller.rb