Initial commit
This commit is contained in:
51
app/api/v2/admin/internal_transfers.rb
Normal file
51
app/api/v2/admin/internal_transfers.rb
Normal file
@@ -0,0 +1,51 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module API
|
||||
module V2
|
||||
module Admin
|
||||
class InternalTransfers < Grape::API
|
||||
helpers ::API::V2::Admin::Helpers
|
||||
|
||||
desc 'Get all internal transfers.',
|
||||
is_array: true,
|
||||
success: API::V2::Admin::Entities::InternalTransfer
|
||||
params do
|
||||
optional :sender,
|
||||
values: { value: -> (v) { Member.where('uid = ? OR username = ?', v, v).present? }, message: 'admin.receiver.doesnt_exist' },
|
||||
desc: 'Sender uid or username.'
|
||||
optional :receiver,
|
||||
values: { value: -> (v) { Member.where('uid = ? OR username = ?', v, v).present? }, message: 'admin.receiver.doesnt_exist' },
|
||||
desc: 'Receiver uid or username.'
|
||||
use :currency
|
||||
use :pagination
|
||||
use :date_picker
|
||||
use :ordering
|
||||
end
|
||||
get '/internal_transfers' do
|
||||
admin_authorize! :read, InternalTransfer
|
||||
|
||||
if params[:sender].present?
|
||||
sender = Member.find_by('uid = ? OR username = ?', params[:sender], params[:sender])
|
||||
params.except!(:sender).merge!(sender_id: sender.id) if sender.present?
|
||||
end
|
||||
|
||||
if params[:receiver].present?
|
||||
receiver = Member.find_by('uid = ? OR username = ?', params[:receiver], params[:receiver])
|
||||
params.except!(:receiver).merge!(receiver_id: receiver.id) if receiver.present?
|
||||
end
|
||||
|
||||
ransack_params = Helpers::RansackBuilder.new(params)
|
||||
.eq(:sender_id, :receiver_id)
|
||||
.translate_in(currency: :currency_id)
|
||||
.with_daterange
|
||||
.build
|
||||
|
||||
search = ::InternalTransfer.ransack(ransack_params)
|
||||
search.sorts = "#{params[:order_by]} #{params[:ordering]}"
|
||||
|
||||
present paginate(search.result), with: API::V2::Admin::Entities::InternalTransfer
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user