Sha256: 15355ea618999bbcb9b064d2aaa69ee88c947bcc352f4a8609317a857fc334aa

Contents?: true

Size: 1.6 KB

Versions: 56

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

module Motor
  class NotesController < ApiBaseController
    wrap_parameters :data, except: %i[include fields]

    load_and_authorize_resource :note, only: %i[index show update destroy]
    before_action :build_note, only: :create
    authorize_resource :note, only: :create

    def index
      @notes = Motor::ApiQuery.call(@notes.active.order(created_at: :asc), params)

      render json: { data: Motor::ApiQuery::BuildJson.call(@notes, params, current_ability) }
    end

    def show
      render json: { data: Motor::ApiQuery::BuildJson.call(@note, params, current_ability) }
    end

    def create
      Motor::Notes::Persist.call(@note, current_user)
      Motor::NotifyNoteMentionsJob.perform_later(@note, current_user)

      render json: { data: Motor::ApiQuery::BuildJson.call(@note, params, current_ability) }
    end

    def update
      @note.assign_attributes(note_params)

      Motor::Notes::Persist.call(@note, current_user)
      Motor::NotifyNoteMentionsJob.perform_later(@note, current_user)

      render json: { data: Motor::ApiQuery::BuildJson.call(@note, params, current_ability) }
    end

    def destroy
      @note.update!(deleted_at: Time.current)

      Motor::NotesChannel.broadcast_to(
        @note.values_at(:record_type, :record_id).join(':'),
        ['remove', @note.as_json(only: %i[id body created_at updated_at])]
      )

      head :ok
    end

    private

    def build_note
      @note = Motor::Note.new(note_params.merge(author: current_user))
    end

    def note_params
      params.require(:data).permit(:body, :record_id, :record_type)
    end
  end
end

Version data entries

56 entries across 56 versions & 6 rubygems

Version Path
motor-admin-0.4.36 app/controllers/motor/notes_controller.rb
motor-admin-0.4.35 app/controllers/motor/notes_controller.rb
motor-admin-0.4.34 app/controllers/motor/notes_controller.rb
motor-admin-0.4.33 app/controllers/motor/notes_controller.rb
motor-admin-0.4.32 app/controllers/motor/notes_controller.rb
motor-admin-0.4.31 app/controllers/motor/notes_controller.rb
motor-admin-0.4.30 app/controllers/motor/notes_controller.rb
motor-admin-0.4.29 app/controllers/motor/notes_controller.rb
motor-admin-0.4.28 app/controllers/motor/notes_controller.rb
motor-admin-cstham8-0.4.35 app/controllers/motor/notes_controller.rb
motor-admin-cstham8-0.4.34 app/controllers/motor/notes_controller.rb
motor-admin-cstham8-0.4.33 app/controllers/motor/notes_controller.rb
motor-admin-cstham8-0.4.32 app/controllers/motor/notes_controller.rb
motor-admin-cstham8-0.4.31 app/controllers/motor/notes_controller.rb
motor-admin-cstham8-0.4.30 app/controllers/motor/notes_controller.rb
motor-admin-cstham8-0.4.29 app/controllers/motor/notes_controller.rb
motor-admin-cstham8-0.4.28 app/controllers/motor/notes_controller.rb
motor-admin-cstham8-0.4.27 app/controllers/motor/notes_controller.rb
motor-admin-0.4.27 app/controllers/motor/notes_controller.rb
motor-admin-unosquare-0.4.28 app/controllers/motor/notes_controller.rb