summaryrefslogtreecommitdiff
path: root/app/models/call_history.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/call_history.rb')
-rw-r--r--app/models/call_history.rb199
1 files changed, 199 insertions, 0 deletions
diff --git a/app/models/call_history.rb b/app/models/call_history.rb
new file mode 100644
index 0000000..4db056a
--- /dev/null
+++ b/app/models/call_history.rb
@@ -0,0 +1,199 @@
+class CallHistory < ActiveRecord::Base
+ belongs_to :call_historyable, :polymorphic => true
+ belongs_to :caller_account, :polymorphic => true
+ belongs_to :callee_account, :polymorphic => true
+ belongs_to :auth_account, :polymorphic => true
+
+ def display_number
+ if self.entry_type == 'dialed'
+ return self.destination_number.to_s
+ else
+ return self.caller_id_number.to_s
+ end
+ end
+
+ def display_name
+ if self.entry_type == 'dialed'
+ begin
+ account = self.callee_account
+ rescue
+ account = nil
+ end
+ name_str = self.callee_id_name
+ else
+ begin
+ account = self.caller_account
+ rescue
+ account = nil
+ end
+ name_str = self.caller_id_name
+ end
+
+ if name_str.blank?
+ if account.class == SipAccount
+ return account.caller_name.to_s
+ elsif account
+ return account.to_s
+ end
+ else
+ return name_str.to_s
+ end
+ end
+
+ def display_auth_account_name
+ begin
+ account = self.auth_account
+ rescue
+ return nil
+ end
+
+ if account.class == SipAccount
+ return account.caller_name.to_s
+ elsif account
+ return account.to_s
+ end
+ end
+
+ def display_image(image_size = :mini, phone_book_entry)
+ if phone_book_entry
+ image = phone_book_entry.image_url(image_size)
+ if ! image.blank?
+ return image
+ end
+ end
+
+ begin
+ if self.entry_type == 'dialed'
+ account = self.callee_account
+ else
+ account = self.caller_account
+ end
+ rescue
+ return nil
+ end
+
+ if account.class == SipAccount && account.sip_accountable.class == User
+ return account.sip_accountable.image_url(image_size).to_s
+ end
+ end
+
+ def display_call_date(date_format, date_today_format)
+ if self.start_stamp.strftime('%Y%m%d') == DateTime::now.strftime('%Y%m%d')
+ return self.start_stamp.strftime(date_today_format)
+ end
+ return self.start_stamp.strftime(date_format)
+ end
+
+ def display_duration
+ if self.duration.to_i > 0
+ minutes = (self.duration / 1.minutes).to_i
+ seconds = self.duration - minutes.minutes.seconds
+ return '%i:%02i' % [minutes, seconds]
+ end
+ end
+
+ def phone_book_entry_by_number(number)
+ begin
+ call_historyable = self.call_historyable
+ rescue
+ return nil
+ end
+
+ if ! call_historyable
+ return nil
+ end
+
+ if call_historyable.class == SipAccount
+ owner = call_historyable.sip_accountable
+ end
+
+ if owner.class == User
+ phone_books = owner.phone_books.all
+ phone_books.concat(owner.current_tenant.phone_books.all)
+ elsif owner.class == Tenant
+ phone_books = owner.phone_books.all
+ end
+
+ if ! phone_books
+ return nil
+ end
+
+ phone_books.each do |phone_book|
+ phone_book_entry = phone_book.find_entry_by_number(number)
+ if phone_book_entry
+ return phone_book_entry
+ end
+ end
+
+ return nil
+
+ end
+
+ def voicemail_message
+ begin
+ return self.call_historyable.voicemail_messages.where(:forwarded_by => self.caller_channel_uuid).first
+ rescue
+ return nil
+ end
+ end
+
+ def call_historyable_uuid
+ begin
+ return self.call_historyable.uuid
+ rescue
+ return nil
+ end
+ end
+
+ def call_historyable_uuid=(uuid)
+ begin
+ return self.call_historyable_id = self.call_historyable_type.constantize.where(:uuid => uuid).first.id
+ rescue
+ end
+ end
+
+ def caller_account_uuid
+ begin
+ return self.caller_account.uuid
+ rescue
+ return nil
+ end
+ end
+
+ def caller_account_uuid=(uuid)
+ begin
+ return self.caller_account_id = self.caller_account_type.constantize.where(:uuid => uuid).first.id
+ rescue
+ end
+ end
+
+ def callee_account_uuid
+ begin
+ return self.callee_account.uuid
+ rescue
+ return nil
+ end
+ end
+
+ def callee_account_uuid=(uuid)
+ begin
+ return self.callee_account_id = self.callee_account_type.constantize.where(:uuid => uuid).first.id
+ rescue
+ end
+ end
+
+ def auth_account_uuid
+ begin
+ return self.auth_account.uuid
+ rescue
+ return nil
+ end
+ end
+
+ def auth_account_uuid=(uuid)
+ begin
+ return self.auth_account_id = self.auth_account_type.constantize.where(:uuid => uuid).first.id
+ rescue
+ end
+ end
+end