Sha256: 92a658221eab8cdca170848aa8cf29e25551094421a9307e4cad1ec9766b3eb2

Contents?: true

Size: 1.88 KB

Versions: 1

Compression:

Stored size: 1.88 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::Services::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

    def resend_push
      message = JeraPush::Message.find(params[:id])
      message.devices.find_each do |device|
        JeraPush::Services::SendPushService.new(device: device, 
          message: message,
          message_device: message.message_devices.where(device: device).last
        ).call
      end
      flash[:notice] = t('jera_push.admin.messages.new.toast.success')
      redirect_to jera_push_admin_message_path(message)
    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(:device).where(message_id: params[:id], device_id: @devices.pluck(:id))
    end

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

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jera_push-2.0.0 app/controllers/jera_push/admin/messages_controller.rb