Initial commit
This commit is contained in:
74
app/api/v2/management/phones.rb
Normal file
74
app/api/v2/management/phones.rb
Normal file
@@ -0,0 +1,74 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module API::V2
|
||||
module Management
|
||||
class Phones < Grape::API
|
||||
helpers do
|
||||
def validate_phone!(phone_number)
|
||||
error!('management.phone.invalid_num', 400) unless Phone.valid?(phone_number)
|
||||
error!('management.phone.number_exist', 400) if Phone.verified.find_by_number(phone_number)
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Phones related routes'
|
||||
resource :phones do
|
||||
|
||||
desc 'Get user phone numbers' do
|
||||
@settings[:scope] = :read_phones
|
||||
success API::V2::Management::Entities::Phone
|
||||
end
|
||||
params do
|
||||
requires :uid, type: String, desc: 'User uid', allow_blank: false
|
||||
end
|
||||
post '/get' do
|
||||
user = User.find_by(uid: params[:uid])
|
||||
error!('user.doesnt_exist', 422) unless user
|
||||
|
||||
present user.phones, with: API::V2::Management::Entities::Phone
|
||||
end
|
||||
|
||||
desc 'Create phone number for user' do
|
||||
@settings[:scope] = :write_phones
|
||||
success API::V2::Management::Entities::Phone
|
||||
end
|
||||
params do
|
||||
requires :uid, type: String, desc: 'User uid', allow_blank: false
|
||||
requires :number, type: String, desc: 'User phone number', allow_blank: false
|
||||
end
|
||||
post do
|
||||
user = User.find_by(uid: params[:uid])
|
||||
error!('user.doesnt_exist', 422) unless user
|
||||
|
||||
phone_number = Phone.international(params[:number])
|
||||
validate_phone!(phone_number)
|
||||
|
||||
error!('management.phone.exists', 400) if user.phones.find_by_number(phone_number)
|
||||
|
||||
phone = user.phones.create(number: params[:number], validated_at: Time.now)
|
||||
error!(phone.errors.full_messages, 422) if phone.errors.any?
|
||||
|
||||
present phone, with: API::V2::Management::Entities::Phone
|
||||
end
|
||||
|
||||
desc 'Delete phone number for user' do
|
||||
@settings[:scope] = :write_phones
|
||||
success API::V2::Management::Entities::Phone
|
||||
end
|
||||
params do
|
||||
requires :uid, type: String, desc: 'User uid', allow_blank: false
|
||||
requires :number, type: String, desc: 'User phone number', allow_blank: false
|
||||
end
|
||||
post '/delete' do
|
||||
user = User.find_by(uid: params[:uid])
|
||||
error!('user.doesnt_exist', 422) unless user
|
||||
|
||||
phone_number = Phone.international(params[:number])
|
||||
phone = user.phones.find_by_number(phone_number) if phone_number.present?
|
||||
error!('management.phone.doesnt_exists', 422) unless phone
|
||||
|
||||
present phone.destroy, with: API::V2::Management::Entities::Phone
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user