Sha256: dbc3974d15a9ce6e1ab2a44648d07020f25ad1d11f4bcf5af6c71b40341bc074

Contents?: true

Size: 1.52 KB

Versions: 4

Compression:

Stored size: 1.52 KB

Contents

module JeraPush
  class Admin::MessagesController < Admin::AdminController

    def index
      @messages = JeraPush::MessagePresenter.wrap(JeraPush::Message.all.order(id: :desc))
      @messages = Kaminari.paginate_array(@messages).page(params[:page])
    end

    def show
      @message = JeraPush::Message.find_by id: params[:id]
      @message = JeraPush::MessagePresenter.new @message
      apply_filter
    end

    def new
      @message = JeraPush::Message.new
      apply_filter
    end

    def device_filter
      apply_filter
      respond_to :js
    end

    def message_devices_filter
      apply_filter
      respond_to :js
    end

    def create
      push_message = JeraPush::Service::SendMessage.new(params).call

      if push_message
        flash[:notice] = t('jera_push.admin.messages.new.toast.success')
        redirect_to jera_push_admin_message_path(push_message)
      else
        flash[:error] = t('jera_push.admin.messages.new.toast.error')
        apply_filter
        render :new
      end
    end

    private

      def apply_filter
        @filter = JeraPush::DeviceFilter.new device_filter_params
        @devices = @filter.search.limit(params[:limit]).order(created_at: :desc)
        @message_devices = JeraPush::MessageDevice.includes(:resource, :device).where('message_id = :id and device_id in (:device_ids)', id: params[:id], device_ids: @devices.pluck(:id))
      end

      def device_filter_params
        params.permit(:value, :field, platform: []).merge({ message_id: params[:id] })
      end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
jera_push-1.0.3 app/controllers/jera_push/admin/messages_controller.rb
jera_push-1.0.2 app/controllers/jera_push/admin/messages_controller.rb
jera_push-1.0.1.1 app/controllers/jera_push/admin/messages_controller.rb
jera_push-1.0.1 app/controllers/jera_push/admin/messages_controller.rb