Sha256: 755fecd85aab2d55e50439d7de0b73097398574f386fd8c8262cc5d5a4950351

Contents?: true

Size: 1.87 KB

Versions: 72

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

72 entries across 72 versions & 1 rubygems

Version Path
renalware-core-2.0.153 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.152 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.151 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.149 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.148 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.147 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.146 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.145 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.144 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.143 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.142 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.141 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.140 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.139 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.138 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.137 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.136 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.135 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.134 app/controllers/renalware/messaging/internal/messages_controller.rb
renalware-core-2.0.133 app/controllers/renalware/messaging/internal/messages_controller.rb