Sha256: 6613fa17fe3e8c6dcb7d326d3a654fab5ad3ce7a0cfa1e424f090f4431bb324a

Contents?: true

Size: 1.87 KB

Versions: 28

Compression:

Stored size: 1.87 KB

Contents

# frozen_string_literal: true

require_dependency "renalware/messaging"

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

        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?
          MessagePresenter.new(message.replying_to_message)
        end

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

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

        def author
          Messaging::Internal.cast_author(current_user)
        end

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

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

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
renalware-core-2.0.46 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.45 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.44 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.43 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.42 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.41 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.40 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.39 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.38 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.37 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.36 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.35 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.34 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.33 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.32 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.31 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.30 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.28 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.27 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.26 app/controllers/renalware/messaging/internal/messages_controller.rb