134 lines
6.1 KiB
Ruby
134 lines
6.1 KiB
Ruby
# frozen_string_literal: true
|
|
#
|
|
# this file follow withdraw_limits.rb
|
|
#
|
|
|
|
module API
|
|
module V2
|
|
module Admin
|
|
class DepositLimits < Grape::API
|
|
helpers ::API::V2::Admin::Helpers
|
|
# list of deposit limits
|
|
desc 'Returns deposit limits table as paginated collection',
|
|
is_array: true,
|
|
success: API::V2::Admin::Entities::DepositLimit
|
|
params do
|
|
optional :group,
|
|
type: String,
|
|
desc: -> { API::V2::Entities::DepositLimit.documentation[:group][:desc] },
|
|
coerce_with: ->(c) { c.strip.downcase }
|
|
optional :kyc_level,
|
|
type: String,
|
|
desc: -> { API::V2::Entities::DepositLimit.documentation[:kyc_level][:desc] }
|
|
optional :kind,
|
|
values: { value: ->(v) { (Array.wrap(v) - DepositLimit.kind.values).blank? }, message: 'limit.kind.invalid' },
|
|
desc: -> { API::V2::Entities::DepositLimit.documentation[:kind][:desc] }
|
|
use :pagination
|
|
use :ordering
|
|
end
|
|
get '/deposit_limits' do
|
|
admin_authorize! :read, DepositLimit
|
|
|
|
ransack_params = Helpers::RansackBuilder.new(params)
|
|
.eq(:group, :kyc_level, :kind)
|
|
.build
|
|
|
|
search = DepositLimit.ransack(ransack_params)
|
|
search.sorts = "#{params[:order_by]} #{params[:ordering]}"
|
|
|
|
present paginate(search.result), with: API::V2::Entities::DepositLimit
|
|
end
|
|
|
|
# create deposit limit
|
|
desc 'It creates deposit limits record',
|
|
success: API::V2::Entities::DepositLimit
|
|
params do
|
|
requires :limit_24_hour,
|
|
type: { value: BigDecimal, message: 'admin.deposit_limit.non_decimal_limit_24_hour' },
|
|
values: { value: ->(p) { p && p >= 0 }, message: 'admin.deposit_limit.invalid_limit_24_hour' },
|
|
desc: -> { API::V2::Entities::DepositLimit.documentation[:limit_24_hour][:desc] }
|
|
requires :limit_1_month,
|
|
type: { value: BigDecimal, message: 'admin.deposit_limit.non_decimal_limit_1_month' },
|
|
values: { value: ->(p) { p && p >= 0 }, message: 'admin.deposit_limit.invalid_limit_1_month' },
|
|
desc: -> { API::V2::Entities::DepositLimit.documentation[:limit_1_month][:desc] }
|
|
requires :kind,
|
|
values: { value: ->(v) { (Array.wrap(v) - DepositLimit.kind.values).blank? }, message: 'limit.kind.invalid' },
|
|
desc: -> { API::V2::Entities::DepositLimit.documentation[:kind][:desc] }
|
|
optional :group,
|
|
type: String,
|
|
default: ::DepositLimit::ANY,
|
|
desc: -> { API::V2::Entities::DepositLimit.documentation[:group][:desc] }
|
|
optional :kyc_level,
|
|
type: String,
|
|
default: ::DepositLimit::ANY,
|
|
desc: -> { API::V2::Entities::DepositLimit.documentation[:kyc_level][:desc] }
|
|
end
|
|
post '/deposit_limits' do
|
|
admin_authorize! :create, DepositLimit
|
|
|
|
deposit_limit = ::DepositLimit.new(declared(params))
|
|
if deposit_limit.save
|
|
present deposit_limit, with: API::V2::Entities::DepositLimit
|
|
status 201
|
|
else
|
|
body errors: deposit_limit.errors.full_messages
|
|
status 422
|
|
end
|
|
end
|
|
|
|
# update deposit limit
|
|
desc 'It updates deposit limits record',
|
|
success: API::V2::Entities::DepositLimit
|
|
params do
|
|
requires :id,
|
|
type: { value: Integer, message: 'admin.deposit_limit.non_integer_id' },
|
|
desc: -> { API::V2::Entities::DepositLimit.documentation[:id][:desc] }
|
|
optional :limit_24_hour,
|
|
type: { value: BigDecimal, message: 'admin.deposit_limit.non_decimal_limit_24_hour' },
|
|
values: { value: ->(p) { p && p >= 0 }, message: 'admin.deposit_limit.invalid_limit_24_hour' },
|
|
desc: -> { API::V2::Entities::DepositLimit.documentation[:limit_24_hour][:desc] }
|
|
optional :limit_1_month,
|
|
type: { value: BigDecimal, message: 'admin.deposit_limit.non_decimal_limit_1_month' },
|
|
values: { value: ->(p) { p && p >= 0 }, message: 'admin.deposit_limit.invalid_limit_1_month' },
|
|
desc: -> { API::V2::Entities::DepositLimit.documentation[:limit_1_month][:desc] }
|
|
optional :kind,
|
|
values: { value: ->(v) { (Array.wrap(v) - DepositLimit.kind.values).blank? }, message: 'limit.kind.invalid' },
|
|
desc: -> { API::V2::Entities::DepositLimit.documentation[:kind][:desc] }
|
|
optional :kyc_level,
|
|
type: String,
|
|
desc: -> { API::V2::Entities::DepositLimit.documentation[:kyc_level][:desc] }
|
|
optional :group,
|
|
type: String,
|
|
coerce_with: ->(c) { c.strip.downcase },
|
|
desc: -> { API::V2::Entities::DepositLimit.documentation[:group][:desc] }
|
|
end
|
|
put '/deposit_limits' do
|
|
admin_authorize! :update, DepositLimit
|
|
|
|
deposit_limit = ::DepositLimit.find(params[:id])
|
|
if deposit_limit.update(declared(params, include_missing: false))
|
|
present deposit_limit, with: API::V2::Entities::DepositLimit
|
|
else
|
|
body errors: deposit_limit.errors.full_messages
|
|
status 422
|
|
end
|
|
end
|
|
|
|
# delete deposit limit
|
|
desc 'It deletes deposit limits record',
|
|
success: API::V2::Entities::DepositLimit
|
|
params do
|
|
requires :id,
|
|
type: { value: Integer, message: 'admin.deposit_limit.non_integer_id' },
|
|
desc: -> { API::V2::Entities::DepositLimit.documentation[:id][:desc] }
|
|
end
|
|
delete '/deposit_limits/:id' do
|
|
admin_authorize! :delete, DepositLimit
|
|
|
|
present DepositLimit.destroy(params[:id]), with: API::V2::Entities::DepositLimit
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|