-
Notifications
You must be signed in to change notification settings - Fork 15
/
user.rb
66 lines (55 loc) · 2.24 KB
/
user.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
class User < ActiveRecord::Base
acts_as_authentic
has_many :phone_numbers, :dependent => :destroy
has_many :voicemails, :dependent => :destroy
has_many :messagings, :dependent => :destroy
has_many :outgoing_calls, :dependent => :destroy
has_many :incoming_calls, :dependent => :destroy
has_many :contacts, :dependent => :destroy
has_many :profiles, :dependent => :destroy
has_many :fs_profiles, :dependent => :destroy
attr_accessor :prefix
attr_accessor :default_number
after_create :create_profile
after_create :create_default_phone_number
validates_presence_of :default_number
# returns the default phone to ring, if user defines multiple default phones, then pick the first one;
# if user does not define a default, then just pick the first forwarding phone;
# if user does not define a forwarding phone, just pick the first phone number;
# if user does not define any phone yet, returns an error message
def default_phone_number
return nil if phone_numbers.empty?
defaults = phone_numbers.select{ |n| n.default == true }
return defaults.first.number unless defaults.empty?
forwards = phone_numbers.select{ |n| n.forward == true }
return forwards.first.number unless forwards.empty?
return phone_numbers.first.number
end
# returns all the forward phone_numbers
def forwarding_numbers
phone_numbers.select{ |n| n.forward == true }.map(&:number)
end
def create_profile
tu = ENV['TROPO_USER']
tp = ENV['TROPO_PASS']
ta = ENV["TROPO_APP"]
tp = TropoProvisioning.new(tu, tp)
address_data = tp.create_address(ta, { :type => 'number', :prefix => @prefix })
new_number = address_data.address.gsub("+1", "")
profile = profiles.build(:voice => new_number,
:voice_token => OUTBOUND_TOKEN_VOICE,
:messaging_token => OUTBOUND_TOKEN_MESSAGING,
:call_url => TROPO_URL)
profile.save
end
def create_default_phone_number
pn = PhoneNumber.new({:user_id => self.id, :number => self.default_number, :forward => true, :default => true, :name => "default"})
pn.save
end
def usa_numbers
TropoUtils.available_numbers
end
def uk_numbers
TropoUtils.available_uk_numbers
end
end