Browse Source

Improved caller id loop.

Martin Edenhofer 8 years ago
parent
commit
f19bc39ddf

+ 2 - 0
app/assets/javascripts/app/controllers/cti.coffee

@@ -136,6 +136,8 @@ class App.CTI extends App.Controller
 
       if item.start && item.end
         item.duration = format((Date.parse(item.end) - Date.parse(item.start))/1000)
+
+    @userPopupsDestroy()
     @html App.view('cti/index')(
       list: @list
     )

+ 15 - 3
app/models/cti/caller_id.rb

@@ -47,10 +47,22 @@ returns
     def self.lookup(caller_id)
       result = Cti::CallerId.where(
         caller_id: caller_id,
-      ).order('id DESC').limit(20)
+        level: 'known',
+      ).group(:user_id).order('id DESC').limit(20)
+      if !result[0]
+        result = Cti::CallerId.where(
+          caller_id: caller_id,
+          level: 'maybe',
+        ).group(:user_id).order('id DESC').limit(20)
+      end
+      if !result[0]
+        result = Cti::CallerId.where(
+          caller_id: caller_id,
+        ).order('id DESC').limit(20)
+      end
 
-      # in case do lookups in external databases
-      if result.empty?
+      # in case do lookups in external sources
+      if !result[0]
         # ...
       end
 

+ 95 - 8
test/unit/cti_caller_id_test.rb

@@ -151,15 +151,15 @@ class CtiCallerIdTest < ActiveSupport::TestCase
     Cti::CallerId.rebuild
 
     caller_ids = Cti::CallerId.lookup('491111222277')
-    assert_equal(0, caller_ids.count)
+    assert_equal(0, caller_ids.length)
 
     caller_ids = Cti::CallerId.lookup('491111222223')
-    assert_equal(1, caller_ids.count)
+    assert_equal(1, caller_ids.length)
     assert_equal(agent1.id, caller_ids[0].user_id)
     assert_equal('known', caller_ids[0].level)
 
     caller_ids = Cti::CallerId.lookup('492222222222')
-    assert_equal(2, caller_ids.count)
+    assert_equal(2, caller_ids.length)
     assert_equal(agent3.id, caller_ids[0].user_id)
     assert_equal('known', caller_ids[0].level)
     assert_equal(agent2.id, caller_ids[1].user_id)
@@ -222,28 +222,115 @@ Mob: +49 333 1112222",
     Cti::CallerId.rebuild
 
     caller_ids = Cti::CallerId.lookup('491111222277')
-    assert_equal(0, caller_ids.count)
+    assert_equal(0, caller_ids.length)
 
     caller_ids = Cti::CallerId.lookup('491111222223')
-    assert_equal(1, caller_ids.count)
+    assert_equal(1, caller_ids.length)
     assert_equal(agent1.id, caller_ids[0].user_id)
     assert_equal('known', caller_ids[0].level)
 
     caller_ids = Cti::CallerId.lookup('492222222222')
-    assert_equal(2, caller_ids.count)
+    assert_equal(2, caller_ids.length)
     assert_equal(agent3.id, caller_ids[0].user_id)
     assert_equal('known', caller_ids[0].level)
     assert_equal(agent2.id, caller_ids[1].user_id)
     assert_equal('known', caller_ids[1].level)
 
     caller_ids = Cti::CallerId.lookup('492226112222')
-    assert_equal(1, caller_ids.count)
+    assert_equal(1, caller_ids.length)
     assert_equal(customer1.id, caller_ids[0].user_id)
     assert_equal('maybe', caller_ids[0].level)
 
     caller_ids = Cti::CallerId.lookup('492221112222')
-    assert_equal(0, caller_ids.count)
+    assert_equal(0, caller_ids.length)
 
   end
 
+  test '3 lookups' do
+
+    Cti::CallerId.destroy_all
+
+    Cti::CallerId.maybe_add(
+      caller_id: '4999999999',
+      level: 'maybe',
+      user_id: 2,
+      object: 'Ticket',
+      o_id: 2,
+    )
+
+    Cti::CallerId.maybe_add(
+      caller_id: '4912345678901',
+      comment: 'Hairdresser Bob Smith, San Francisco',
+      level: 'public',
+      user_id: 2,
+      object: 'GoYello',
+      o_id: 1,
+    )
+
+    caller_ids = Cti::CallerId.lookup('4912345678901')
+    assert_equal(1, caller_ids.length)
+    assert_equal('public', caller_ids[0].level)
+    assert_equal(2, caller_ids[0].user_id)
+    assert_equal('Hairdresser Bob Smith, San Francisco', caller_ids[0].comment)
+
+    Cti::CallerId.maybe_add(
+      caller_id: '4912345678901',
+      level: 'maybe',
+      user_id: 2,
+      object: 'Ticket',
+      o_id: 2,
+    )
+
+    caller_ids = Cti::CallerId.lookup('4912345678901')
+    assert_equal(1, caller_ids.length)
+    assert_equal('maybe', caller_ids[0].level)
+    assert_equal(2, caller_ids[0].user_id)
+    assert_equal(nil, caller_ids[0].comment)
+
+    Cti::CallerId.maybe_add(
+      caller_id: '4912345678901',
+      level: 'maybe',
+      user_id: 2,
+      object: 'Ticket',
+      o_id: 2,
+    )
+
+    caller_ids = Cti::CallerId.lookup('4912345678901')
+    assert_equal(1, caller_ids.length)
+    assert_equal('maybe', caller_ids[0].level)
+    assert_equal(2, caller_ids[0].user_id)
+    assert_equal(nil, caller_ids[0].comment)
+
+    Cti::CallerId.maybe_add(
+      caller_id: '4912345678901',
+      level: 'maybe',
+      user_id: 3,
+      object: 'Ticket',
+      o_id: 2,
+    )
+
+    caller_ids = Cti::CallerId.lookup('4912345678901')
+    assert_equal(2, caller_ids.length)
+    assert_equal('maybe', caller_ids[0].level)
+    assert_equal(3, caller_ids[0].user_id)
+    assert_equal(nil, caller_ids[0].comment)
+    assert_equal('maybe', caller_ids[1].level)
+    assert_equal(2, caller_ids[1].user_id)
+    assert_equal(nil, caller_ids[1].comment)
+
+    Cti::CallerId.maybe_add(
+      caller_id: '4912345678901',
+      level: 'known',
+      user_id: 3,
+      object: 'User',
+      o_id: 2,
+    )
+
+    caller_ids = Cti::CallerId.lookup('4912345678901')
+    assert_equal(1, caller_ids.length)
+    assert_equal('known', caller_ids[0].level)
+    assert_equal(3, caller_ids[0].user_id)
+    assert_equal(nil, caller_ids[0].comment)
+
+  end
 end