Sha256: 75043c71a2c282cfa9496b4d83e1cf15371b686548487b5e8528506873116dc9

Contents?: true

Size: 1.87 KB

Versions: 27

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

27 entries across 27 versions & 1 rubygems

Version Path
renalware-core-2.0.77 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.76 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.75 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.74 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.73 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.72 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.71 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.70 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.69 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.68 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.67 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.64 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.63 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.62 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.61 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.60 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.58 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.57 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.56 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.55 app/controllers/renalware/messaging/internal/messages_controller.rb