queri 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +43 -4
 - data/lib/queri/aggregate_report_helpers.rb +15 -0
 - data/lib/queri/arg_helpers.rb +24 -0
 - data/lib/queri/composite_agent_level_report_helpers.rb +19 -0
 - data/lib/queri/composite_report_helpers.rb +14 -0
 - data/lib/queri/stats/agents_and_sessions/agent_availability.rb +2 -49
 - data/lib/queri/stats/answered_calls/agents_on_queue.rb +2 -49
 - data/lib/queri/stats/answered_calls/all_calls.rb +2 -50
 - data/lib/queri/stats/answered_calls/answered_calls_by_direction.rb +2 -51
 - data/lib/queri/stats/answered_calls/answered_calls_by_queue.rb +2 -51
 - data/lib/queri/stats/answered_calls/answered_calls_by_stints.rb +2 -51
 - data/lib/queri/stats/answered_calls/calls_fully_within_the_given_time_interval.rb +2 -50
 - data/lib/queri/stats/answered_calls/disconnection_causes.rb +2 -51
 - data/lib/queri/stats/answered_calls/dnis_used.rb +2 -51
 - data/lib/queri/stats/answered_calls/ivr_selection.rb +2 -51
 - data/lib/queri/stats/answered_calls/music_on_hold_by_agent.rb +2 -49
 - data/lib/queri/stats/answered_calls/queue_position.rb +2 -51
 - data/lib/queri/stats/answered_calls/service_level_agreement.rb +2 -49
 - data/lib/queri/stats/answered_calls/transfers.rb +2 -51
 - data/lib/queri/stats/details_of_agent_sessions_and_pauses/detail_of_agent_pauses.rb +2 -54
 - data/lib/queri/stats/details_of_agent_sessions_and_pauses/detail_of_agent_sessions.rb +2 -54
 - data/lib/queri/stats/details_of_answered_calls/queue_details.rb +35 -0
 - data/lib/queri/stats/details_of_answered_calls.rb +11 -0
 - data/lib/queri/stats/unanswered_calls/all_calls_by_stints.rb +24 -0
 - data/lib/queri/stats/unanswered_calls/call_overview.rb +29 -0
 - data/lib/queri/stats/unanswered_calls/calls_fully_within_the_given_time_interval.rb +82 -0
 - data/lib/queri/stats/unanswered_calls/disconnection_causes.rb +24 -0
 - data/lib/queri/stats/unanswered_calls/dnis_used.rb +24 -0
 - data/lib/queri/stats/unanswered_calls/dnis_used_for_all_calls.rb +24 -0
 - data/lib/queri/stats/unanswered_calls/enter_queue_position.rb +24 -0
 - data/lib/queri/stats/unanswered_calls/enter_queue_position_for_all_calls.rb +24 -0
 - data/lib/queri/stats/unanswered_calls/inclusive_answered_service_level_agreement.rb +25 -0
 - data/lib/queri/stats/unanswered_calls/inclusive_service_level_agreement.rb +25 -0
 - data/lib/queri/stats/unanswered_calls/ivr_selection.rb +28 -0
 - data/lib/queri/stats/unanswered_calls/ivr_selection_for_all_calls.rb +24 -0
 - data/lib/queri/stats/unanswered_calls/unanswered_calls_by_key_press.rb +24 -0
 - data/lib/queri/stats/unanswered_calls/unanswered_calls_by_queue.rb +25 -0
 - data/lib/queri/stats/unanswered_calls/unanswered_calls_by_stints.rb +24 -0
 - data/lib/queri/stats/unanswered_calls/unanswered_calls_distribution_by_length.rb +26 -0
 - data/lib/queri/stats/unanswered_calls/unanswered_outbound_calls_by_agent.rb +24 -0
 - data/lib/queri/stats.rb +19 -2
 - data/lib/queri/version.rb +1 -1
 - data/spec/stats/agents_and_sessions/agent_availability_spec.rb +1 -1
 - data/spec/stats/agents_and_sessions/agents_and_sessions_spec.rb +1 -1
 - data/spec/stats/answered_calls/agents_on_queue_spec.rb +1 -1
 - data/spec/stats/answered_calls/all_calls_spec.rb +1 -1
 - data/spec/stats/answered_calls/answered_calls_spec.rb +1 -1
 - data/spec/stats/details_of_answered_calls/details_of_answered_calls_spec.rb +7 -0
 - data/spec/stats/details_of_answered_calls/queue_details_spec.rb +20 -0
 - data/spec/stats/unanswered_calls/all_calls_by_stints_spec.rb +22 -0
 - data/spec/stats/unanswered_calls/call_overview_spec.rb +22 -0
 - data/spec/stats/unanswered_calls/calls_fully_within_the_given_time_interval_spec.rb +20 -0
 - data/spec/stats/unanswered_calls/disconnection_causes_spec.rb +20 -0
 - data/spec/stats/unanswered_calls/dnis_used_for_all_calls_spec.rb +22 -0
 - data/spec/stats/unanswered_calls/dnis_used_spec.rb +22 -0
 - data/spec/stats/unanswered_calls/enter_queue_position_for_all_calls_spec.rb +22 -0
 - data/spec/stats/unanswered_calls/enter_queue_position_spec.rb +22 -0
 - data/spec/stats/unanswered_calls/inclusive_answered_service_level_agreement_spec.rb +20 -0
 - data/spec/stats/unanswered_calls/inclusive_service_level_agreement_spec.rb +20 -0
 - data/spec/stats/unanswered_calls/ivr_selection_for_all_calls_spec.rb +22 -0
 - data/spec/stats/unanswered_calls/ivr_selection_spec.rb +22 -0
 - data/spec/stats/unanswered_calls/unanswered_calls_by_key_press_spec.rb +22 -0
 - data/spec/stats/unanswered_calls/unanswered_calls_by_queue_spec.rb +22 -0
 - data/spec/stats/unanswered_calls/unanswered_calls_by_stints_spec.rb +22 -0
 - data/spec/stats/unanswered_calls/unanswered_calls_distribution_by_length_spec.rb +20 -0
 - data/spec/stats/unanswered_calls/unanswered_outbound_calls_by_agent_spec.rb +22 -0
 - metadata +64 -3
 - /data/lib/queri/stats/{details_of_agents_sessions_and_pauses.rb → details_of_agent_sessions_and_pauses.rb} +0 -0
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 81573e2933bacb797683dfda3f935882e6754f07
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 9da9459034980ce147cb498b850aa783ec41bfd1
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 5b0184f3413c0d6cdb93564fa5239549adb704abb4e37e201aaf4cf5ee1bccbd299b09c2e3ea7c9b526d85da12b1587ba8a1924f82a2b88260508d4570ae71c9
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: b76246a5b1b0c5e1c2e5d7ba532be82eef0cdff49d2122f33f1e0e0a2db4df93f0392438ba0801b5dd075c88bc33f0b3d598614a3431761864e55f3491ffd710
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -55,7 +55,7 @@ Currently returns analyses from two methods: QM.stats and QM.realtime. 
     | 
|
| 
       55 
55 
     | 
    
         
             
                  * AnsweredCallsByDirection
         
     | 
| 
       56 
56 
     | 
    
         
             
                  * AnsweredCallsByQueue
         
     | 
| 
       57 
57 
     | 
    
         
             
                  * AnsweredCallsByStints
         
     | 
| 
       58 
     | 
    
         
            -
                  *  
     | 
| 
      
 58 
     | 
    
         
            +
                  * CallsFullyWithinTheGivenTimeInterval
         
     | 
| 
       59 
59 
     | 
    
         
             
                  * DisconnectionCauses
         
     | 
| 
       60 
60 
     | 
    
         
             
                  * DnisUsed
         
     | 
| 
       61 
61 
     | 
    
         
             
                  * IvrSelection
         
     | 
| 
         @@ -66,8 +66,27 @@ Currently returns analyses from two methods: QM.stats and QM.realtime. 
     | 
|
| 
       66 
66 
     | 
    
         
             
                * DetailsOfAgentSessionsAndPauses
         
     | 
| 
       67 
67 
     | 
    
         
             
                  * DetailOfAgentSessions
         
     | 
| 
       68 
68 
     | 
    
         
             
                  * DetailOfAgentPauses
         
     | 
| 
      
 69 
     | 
    
         
            +
                * DetailsOfAnsweredCalls
         
     | 
| 
      
 70 
     | 
    
         
            +
                  * QueueDetails
         
     | 
| 
       69 
71 
     | 
    
         
             
                * UnansweredCalls
         
     | 
| 
       70 
72 
     | 
    
         
             
                  * AllCalls
         
     | 
| 
      
 73 
     | 
    
         
            +
                  * AllCallsByStints
         
     | 
| 
      
 74 
     | 
    
         
            +
                  * CallOverview
         
     | 
| 
      
 75 
     | 
    
         
            +
                  * CallsFullyWithinTheGivenTimeInterval
         
     | 
| 
      
 76 
     | 
    
         
            +
                  * DisconnectionCauses
         
     | 
| 
      
 77 
     | 
    
         
            +
                  * DnisUsed
         
     | 
| 
      
 78 
     | 
    
         
            +
                  * DnisUsedForAllCalls
         
     | 
| 
      
 79 
     | 
    
         
            +
                  * EnterQueuePosition
         
     | 
| 
      
 80 
     | 
    
         
            +
                  * EnterQueuePositionForAllCalls
         
     | 
| 
      
 81 
     | 
    
         
            +
                  * InclusiveAnsweredServiceLevelAgreement
         
     | 
| 
      
 82 
     | 
    
         
            +
                  * InclusiveServiceLevelAgreement
         
     | 
| 
      
 83 
     | 
    
         
            +
                  * IvrSelection
         
     | 
| 
      
 84 
     | 
    
         
            +
                  * IvrSelectionForAllCalls
         
     | 
| 
      
 85 
     | 
    
         
            +
                  * UnansweredCallsByKeyPress
         
     | 
| 
      
 86 
     | 
    
         
            +
                  * UnansweredCallsByQueue
         
     | 
| 
      
 87 
     | 
    
         
            +
                  * UnansweredCallsByStints
         
     | 
| 
      
 88 
     | 
    
         
            +
                  * UnansweredCallsDistributionByLength
         
     | 
| 
      
 89 
     | 
    
         
            +
                  * UnansweredOutboundCallsByAgent
         
     | 
| 
       71 
90 
     | 
    
         
             
              * Realtime
         
     | 
| 
       72 
91 
     | 
    
         
             
                * Agents
         
     | 
| 
       73 
92 
     | 
    
         
             
                * Queues
         
     | 
| 
         @@ -93,13 +112,17 @@ Composite aggregate reports return an Array of Hashes, each Hash corresponding t 
     | 
|
| 
       93 
112 
     | 
    
         
             
                    * AgentAvailability
         
     | 
| 
       94 
113 
     | 
    
         
             
                  * AnsweredCalls
         
     | 
| 
       95 
114 
     | 
    
         
             
                    * AgentsOnQueue
         
     | 
| 
      
 115 
     | 
    
         
            +
                    * MusicOnHoldByAgent
         
     | 
| 
      
 116 
     | 
    
         
            +
                  * DetailsOfAnsweredCalls
         
     | 
| 
      
 117 
     | 
    
         
            +
                    * QueueDetails
         
     | 
| 
      
 118 
     | 
    
         
            +
                  * UnansweredCalls
         
     | 
| 
      
 119 
     | 
    
         
            +
                    * UnansweredOutboundCallsByAgent
         
     | 
| 
      
 120 
     | 
    
         
            +
                    * UnansweredCallsByKeyPress
         
     | 
| 
       96 
121 
     | 
    
         
             
                * Realtime
         
     | 
| 
       97 
122 
     | 
    
         
             
                  * Agents
         
     | 
| 
       98 
123 
     | 
    
         
             
                  * Queues
         
     | 
| 
       99 
124 
     | 
    
         
             
              * Composite agent-level reports
         
     | 
| 
       100 
125 
     | 
    
         
             
                * Stats
         
     | 
| 
       101 
     | 
    
         
            -
                  * AnsweredCalls
         
     | 
| 
       102 
     | 
    
         
            -
                    * MusicOnHoldByAgent
         
     | 
| 
       103 
126 
     | 
    
         
             
                  * DetailsOfAgentSessionsAndPauses
         
     | 
| 
       104 
127 
     | 
    
         
             
                    * DetailOfAgentSessions
         
     | 
| 
       105 
128 
     | 
    
         
             
                    * DetailOfAgentPauses
         
     | 
| 
         @@ -107,9 +130,10 @@ Composite aggregate reports return an Array of Hashes, each Hash corresponding t 
     | 
|
| 
       107 
130 
     | 
    
         
             
                * Stats
         
     | 
| 
       108 
131 
     | 
    
         
             
                  * AnsweredCalls
         
     | 
| 
       109 
132 
     | 
    
         
             
                    * AllCalls
         
     | 
| 
       110 
     | 
    
         
            -
                    *  
     | 
| 
      
 133 
     | 
    
         
            +
                    * CallsFullyWithinTheGivenTimeInterval
         
     | 
| 
       111 
134 
     | 
    
         
             
                  * UnansweredCalls
         
     | 
| 
       112 
135 
     | 
    
         
             
                    * AllCalls
         
     | 
| 
      
 136 
     | 
    
         
            +
                    * CallsFullyWithinTheGivenTimeInterval
         
     | 
| 
       113 
137 
     | 
    
         
             
              * Composite aggregate reports
         
     | 
| 
       114 
138 
     | 
    
         
             
                * Stats
         
     | 
| 
       115 
139 
     | 
    
         
             
                  * AnsweredCalls
         
     | 
| 
         @@ -122,6 +146,21 @@ Composite aggregate reports return an Array of Hashes, each Hash corresponding t 
     | 
|
| 
       122 
146 
     | 
    
         
             
                    * QueuePosition
         
     | 
| 
       123 
147 
     | 
    
         
             
                    * ServiceLevelAgreement
         
     | 
| 
       124 
148 
     | 
    
         
             
                    * Transfers
         
     | 
| 
      
 149 
     | 
    
         
            +
                  * UnansweredCalls
         
     | 
| 
      
 150 
     | 
    
         
            +
                    * AllCallsByStints
         
     | 
| 
      
 151 
     | 
    
         
            +
                    * CallOverview
         
     | 
| 
      
 152 
     | 
    
         
            +
                    * DisconnectionCauses
         
     | 
| 
      
 153 
     | 
    
         
            +
                    * DnisUsed
         
     | 
| 
      
 154 
     | 
    
         
            +
                    * DnisUsedForAllCalls
         
     | 
| 
      
 155 
     | 
    
         
            +
                    * EnterQueuePosition
         
     | 
| 
      
 156 
     | 
    
         
            +
                    * EnterQueuePositionForAllCalls
         
     | 
| 
      
 157 
     | 
    
         
            +
                    * InclusiveAnsweredServiceLevelAgreement
         
     | 
| 
      
 158 
     | 
    
         
            +
                    * InclusiveServiceLevelAgreement
         
     | 
| 
      
 159 
     | 
    
         
            +
                    * IvrSelection
         
     | 
| 
      
 160 
     | 
    
         
            +
                    * IvrSelectionForAllCalls
         
     | 
| 
      
 161 
     | 
    
         
            +
                    * UnansweredCallsByQueue
         
     | 
| 
      
 162 
     | 
    
         
            +
                    * UnansweredCallsByStints
         
     | 
| 
      
 163 
     | 
    
         
            +
                    * UnansweredCallsDistributionByLength
         
     | 
| 
       125 
164 
     | 
    
         | 
| 
       126 
165 
     | 
    
         
             
            ## Contributing
         
     | 
| 
       127 
166 
     | 
    
         | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module AggregateReportHelpers
         
     | 
| 
      
 2 
     | 
    
         
            +
              private
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                def parse_response
         
     | 
| 
      
 5 
     | 
    
         
            +
                  r = Queri.send_request(@queues, self, @period_start, @period_end)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  xml_keys_to_human_readable_keys = self.class.key_translations.invert
         
     | 
| 
      
 7 
     | 
    
         
            +
                  r.each_with_index do |metric,i|
         
     | 
| 
      
 8 
     | 
    
         
            +
                    if i > 0
         
     | 
| 
      
 9 
     | 
    
         
            +
                      metric[0] = xml_keys_to_human_readable_keys[ metric[0] ]
         
     | 
| 
      
 10 
     | 
    
         
            +
                    end
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
                  r.shift
         
     | 
| 
      
 13 
     | 
    
         
            +
                  Hash[*r.flatten]
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module ArgHelpers
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              private
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                def valid_args? args
         
     | 
| 
      
 6 
     | 
    
         
            +
                  valid = true
         
     | 
| 
      
 7 
     | 
    
         
            +
                  valid = false if args[0].class != Array
         
     | 
| 
      
 8 
     | 
    
         
            +
                  valid = false if args[1].class != Time
         
     | 
| 
      
 9 
     | 
    
         
            +
                  valid = false if args[2].class != Time
         
     | 
| 
      
 10 
     | 
    
         
            +
                  if valid and args[0].empty?
         
     | 
| 
      
 11 
     | 
    
         
            +
                    raise ArgumentError, "queues array cannot be empty"
         
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
                  return valid
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                def normalize_times queues, period_start, period_end
         
     | 
| 
      
 17 
     | 
    
         
            +
                  if period_start > period_end
         
     | 
| 
      
 18 
     | 
    
         
            +
                    tmp = period_start
         
     | 
| 
      
 19 
     | 
    
         
            +
                    period_start = period_end
         
     | 
| 
      
 20 
     | 
    
         
            +
                    period_end = tmp
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
                  return [queues, period_start, period_end]
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module CompositeAgentLevelReportHelpers
         
     | 
| 
      
 2 
     | 
    
         
            +
              private
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                def parse_response
         
     | 
| 
      
 5 
     | 
    
         
            +
                  r = Queri.send_request(@queues, self, @period_start, @period_end)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  xml_keys_to_human_readable_keys = self.class.key_translations.invert
         
     | 
| 
      
 7 
     | 
    
         
            +
                  new_keys = r.shift.map {|k| xml_keys_to_human_readable_keys[k]}
         
     | 
| 
      
 8 
     | 
    
         
            +
                  agent_metrics = []
         
     | 
| 
      
 9 
     | 
    
         
            +
                  r.each do |agent|
         
     | 
| 
      
 10 
     | 
    
         
            +
                    agent_metrics << Hash[new_keys.zip(agent)]
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
                  agents = agent_metrics.map {|a| a[:agent]}.uniq
         
     | 
| 
      
 13 
     | 
    
         
            +
                  parsed_metrics = Hash.new
         
     | 
| 
      
 14 
     | 
    
         
            +
                  agents.each do |agent|
         
     | 
| 
      
 15 
     | 
    
         
            +
                    parsed_metrics[agent] = agent_metrics.select {|m| m[:agent] == agent}
         
     | 
| 
      
 16 
     | 
    
         
            +
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
                  return parsed_metrics
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module CompositeReportHelpers
         
     | 
| 
      
 2 
     | 
    
         
            +
              private
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                def parse_response
         
     | 
| 
      
 5 
     | 
    
         
            +
                  r = Queri.send_request(@queues, self, @period_start, @period_end)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  xml_keys_to_human_readable_keys = self.class.key_translations.invert
         
     | 
| 
      
 7 
     | 
    
         
            +
                  new_keys = r.shift.map {|k| xml_keys_to_human_readable_keys[k]}
         
     | 
| 
      
 8 
     | 
    
         
            +
                  agent_metrics = []
         
     | 
| 
      
 9 
     | 
    
         
            +
                  r.each do |agent|
         
     | 
| 
      
 10 
     | 
    
         
            +
                    agent_metrics << Hash[new_keys.zip(agent)]
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
                  return agent_metrics
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,18 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Queri
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Stats
         
     | 
| 
       3 
3 
     | 
    
         
             
                class AgentsAndSessions
         
     | 
| 
       4 
     | 
    
         
            -
                  class AgentAvailability
         
     | 
| 
       5 
     | 
    
         
            -
                     
     | 
| 
      
 4 
     | 
    
         
            +
                  class AgentAvailability < Queri::Stats
         
     | 
| 
      
 5 
     | 
    
         
            +
                    include CompositeReportHelpers
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                    class << self
         
     | 
| 
       8 
8 
     | 
    
         
             
                      def xml_code
         
     | 
| 
       9 
9 
     | 
    
         
             
                        AgentsAndSessions.xml_code + ".AgentAvail"
         
     | 
| 
       10 
10 
     | 
    
         
             
                      end
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                      def query_method
         
     | 
| 
       13 
     | 
    
         
            -
                        Stats.query_method
         
     | 
| 
       14 
     | 
    
         
            -
                      end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
12 
     | 
    
         
             
                      def key_translations
         
     | 
| 
       17 
13 
     | 
    
         
             
                        Hash[
         
     | 
| 
       18 
14 
     | 
    
         
             
                          :level, "Level",
         
     | 
| 
         @@ -26,50 +22,7 @@ module Queri 
     | 
|
| 
       26 
22 
     | 
    
         
             
                          :placeholder_for_bar_graph, "..."
         
     | 
| 
       27 
23 
     | 
    
         
             
                        ]
         
     | 
| 
       28 
24 
     | 
    
         
             
                      end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                      def keys
         
     | 
| 
       31 
     | 
    
         
            -
                        key_translations.keys
         
     | 
| 
       32 
     | 
    
         
            -
                      end
         
     | 
| 
       33 
25 
     | 
    
         
             
                    end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                    def initialize *args
         
     | 
| 
       36 
     | 
    
         
            -
                      raise ArgumentError, "expected arguments: queues(Array), period_start(Time), period_end(Time)" unless valid_args?(args)
         
     | 
| 
       37 
     | 
    
         
            -
                      @queues, @period_start, @period_end = normalize_times(*args)
         
     | 
| 
       38 
     | 
    
         
            -
                      @response = parse_response
         
     | 
| 
       39 
     | 
    
         
            -
                    end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                    private
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                      def valid_args? args
         
     | 
| 
       44 
     | 
    
         
            -
                        valid = true
         
     | 
| 
       45 
     | 
    
         
            -
                        valid = false if args[0].class != Array
         
     | 
| 
       46 
     | 
    
         
            -
                        valid = false if args[1].class != Time
         
     | 
| 
       47 
     | 
    
         
            -
                        valid = false if args[2].class != Time
         
     | 
| 
       48 
     | 
    
         
            -
                        if valid and args[0].empty?
         
     | 
| 
       49 
     | 
    
         
            -
                          raise ArgumentError, "queues array cannot be empty"
         
     | 
| 
       50 
     | 
    
         
            -
                        end
         
     | 
| 
       51 
     | 
    
         
            -
                        return valid
         
     | 
| 
       52 
     | 
    
         
            -
                      end
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
                      def normalize_times queues, period_start, period_end
         
     | 
| 
       55 
     | 
    
         
            -
                        if period_start > period_end
         
     | 
| 
       56 
     | 
    
         
            -
                          tmp = period_start
         
     | 
| 
       57 
     | 
    
         
            -
                          period_start = period_end
         
     | 
| 
       58 
     | 
    
         
            -
                          period_end = tmp
         
     | 
| 
       59 
     | 
    
         
            -
                        end
         
     | 
| 
       60 
     | 
    
         
            -
                        return [queues, period_start, period_end]
         
     | 
| 
       61 
     | 
    
         
            -
                      end
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
                      def parse_response
         
     | 
| 
       64 
     | 
    
         
            -
                        r = Queri.send_request(@queues, self, @period_start, @period_end)
         
     | 
| 
       65 
     | 
    
         
            -
                        xml_keys_to_human_readable_keys = self.class.key_translations.invert
         
     | 
| 
       66 
     | 
    
         
            -
                        new_keys = r.shift.map {|k| xml_keys_to_human_readable_keys[k]}
         
     | 
| 
       67 
     | 
    
         
            -
                        agent_metrics = []
         
     | 
| 
       68 
     | 
    
         
            -
                        r.each do |agent|
         
     | 
| 
       69 
     | 
    
         
            -
                          agent_metrics << Hash[new_keys.zip(agent)]
         
     | 
| 
       70 
     | 
    
         
            -
                        end
         
     | 
| 
       71 
     | 
    
         
            -
                        return agent_metrics
         
     | 
| 
       72 
     | 
    
         
            -
                      end
         
     | 
| 
       73 
26 
     | 
    
         
             
                  end
         
     | 
| 
       74 
27 
     | 
    
         
             
                end
         
     | 
| 
       75 
28 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,18 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Queri
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Stats
         
     | 
| 
       3 
3 
     | 
    
         
             
                class AnsweredCalls
         
     | 
| 
       4 
     | 
    
         
            -
                  class AgentsOnQueue
         
     | 
| 
       5 
     | 
    
         
            -
                     
     | 
| 
      
 4 
     | 
    
         
            +
                  class AgentsOnQueue < Queri::Stats
         
     | 
| 
      
 5 
     | 
    
         
            +
                    include CompositeReportHelpers
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                    class << self
         
     | 
| 
       8 
8 
     | 
    
         
             
                      def xml_code
         
     | 
| 
       9 
9 
     | 
    
         
             
                        AnsweredCalls.xml_code + ".AgentsOnQueue"
         
     | 
| 
       10 
10 
     | 
    
         
             
                      end
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                      def query_method
         
     | 
| 
       13 
     | 
    
         
            -
                        Stats.query_method
         
     | 
| 
       14 
     | 
    
         
            -
                      end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
12 
     | 
    
         
             
                      def key_translations
         
     | 
| 
       17 
13 
     | 
    
         
             
                        Hash[
         
     | 
| 
       18 
14 
     | 
    
         
             
                          :agent, "Agent",
         
     | 
| 
         @@ -23,50 +19,7 @@ module Queri 
     | 
|
| 
       23 
19 
     | 
    
         
             
                          :average_call_time, "Average call time"
         
     | 
| 
       24 
20 
     | 
    
         
             
                        ]
         
     | 
| 
       25 
21 
     | 
    
         
             
                      end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                      def keys
         
     | 
| 
       28 
     | 
    
         
            -
                        key_translations.keys
         
     | 
| 
       29 
     | 
    
         
            -
                      end
         
     | 
| 
       30 
22 
     | 
    
         
             
                    end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                    def initialize *args
         
     | 
| 
       33 
     | 
    
         
            -
                      raise ArgumentError, "expected arguments: queues(Array), period_start(Time), period_end(Time)" unless valid_args?(args)
         
     | 
| 
       34 
     | 
    
         
            -
                      @queues, @period_start, @period_end = normalize_times(*args)
         
     | 
| 
       35 
     | 
    
         
            -
                      @response = parse_response
         
     | 
| 
       36 
     | 
    
         
            -
                    end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                    private
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                      def valid_args? args
         
     | 
| 
       41 
     | 
    
         
            -
                        valid = true
         
     | 
| 
       42 
     | 
    
         
            -
                        valid = false if args[0].class != Array
         
     | 
| 
       43 
     | 
    
         
            -
                        valid = false if args[1].class != Time
         
     | 
| 
       44 
     | 
    
         
            -
                        valid = false if args[2].class != Time
         
     | 
| 
       45 
     | 
    
         
            -
                        if valid and args[0].empty?
         
     | 
| 
       46 
     | 
    
         
            -
                          raise ArgumentError, "queues array cannot be empty"
         
     | 
| 
       47 
     | 
    
         
            -
                        end
         
     | 
| 
       48 
     | 
    
         
            -
                        return valid
         
     | 
| 
       49 
     | 
    
         
            -
                      end
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
                      def normalize_times queues, period_start, period_end
         
     | 
| 
       52 
     | 
    
         
            -
                        if period_start > period_end
         
     | 
| 
       53 
     | 
    
         
            -
                          tmp = period_start
         
     | 
| 
       54 
     | 
    
         
            -
                          period_start = period_end
         
     | 
| 
       55 
     | 
    
         
            -
                          period_end = tmp
         
     | 
| 
       56 
     | 
    
         
            -
                        end
         
     | 
| 
       57 
     | 
    
         
            -
                        return [queues, period_start, period_end]
         
     | 
| 
       58 
     | 
    
         
            -
                      end
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
                      def parse_response
         
     | 
| 
       61 
     | 
    
         
            -
                        r = Queri.send_request(@queues, self, @period_start, @period_end)
         
     | 
| 
       62 
     | 
    
         
            -
                        xml_keys_to_human_readable_keys = self.class.key_translations.invert
         
     | 
| 
       63 
     | 
    
         
            -
                        new_keys = r.shift.map {|k| xml_keys_to_human_readable_keys[k]}
         
     | 
| 
       64 
     | 
    
         
            -
                        agent_metrics = []
         
     | 
| 
       65 
     | 
    
         
            -
                        r.each do |agent|
         
     | 
| 
       66 
     | 
    
         
            -
                          agent_metrics << Hash[new_keys.zip(agent)]
         
     | 
| 
       67 
     | 
    
         
            -
                        end
         
     | 
| 
       68 
     | 
    
         
            -
                        return agent_metrics
         
     | 
| 
       69 
     | 
    
         
            -
                      end
         
     | 
| 
       70 
23 
     | 
    
         
             
                  end
         
     | 
| 
       71 
24 
     | 
    
         
             
                end
         
     | 
| 
       72 
25 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,18 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Queri
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Stats
         
     | 
| 
       3 
3 
     | 
    
         
             
                class AnsweredCalls
         
     | 
| 
       4 
     | 
    
         
            -
                  class AllCalls
         
     | 
| 
       5 
     | 
    
         
            -
                     
     | 
| 
      
 4 
     | 
    
         
            +
                  class AllCalls < Queri::Stats
         
     | 
| 
      
 5 
     | 
    
         
            +
                    include AggregateReportHelpers
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                    class << self
         
     | 
| 
       8 
8 
     | 
    
         
             
                      def xml_code
         
     | 
| 
       9 
9 
     | 
    
         
             
                        AnsweredCalls.xml_code + ".RiassAllCalls"
         
     | 
| 
       10 
10 
     | 
    
         
             
                      end
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                      def query_method
         
     | 
| 
       13 
     | 
    
         
            -
                        Stats.query_method
         
     | 
| 
       14 
     | 
    
         
            -
                      end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
12 
     | 
    
         
             
                      def key_translations
         
     | 
| 
       17 
13 
     | 
    
         
             
                        Hash[
         
     | 
| 
       18 
14 
     | 
    
         
             
                          :calls_answered, "N. calls answered by operators:",
         
     | 
| 
         @@ -30,51 +26,7 @@ module Queri 
     | 
|
| 
       30 
26 
     | 
    
         
             
                          :queue_position_coverage, "Coverage"
         
     | 
| 
       31 
27 
     | 
    
         
             
                        ]
         
     | 
| 
       32 
28 
     | 
    
         
             
                      end
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                      def keys
         
     | 
| 
       35 
     | 
    
         
            -
                        key_translations.keys
         
     | 
| 
       36 
     | 
    
         
            -
                      end
         
     | 
| 
       37 
29 
     | 
    
         
             
                    end
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                    def initialize *args
         
     | 
| 
       40 
     | 
    
         
            -
                      raise ArgumentError, "expected arguments: queues(Array), period_start(Time), period_end(Time)" unless valid_args?(args)
         
     | 
| 
       41 
     | 
    
         
            -
                      @queues, @period_start, @period_end = normalize_times(*args)
         
     | 
| 
       42 
     | 
    
         
            -
                      @response = parse_response
         
     | 
| 
       43 
     | 
    
         
            -
                    end
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                    private
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
                      def valid_args? args
         
     | 
| 
       48 
     | 
    
         
            -
                        valid = true
         
     | 
| 
       49 
     | 
    
         
            -
                        valid = false if args[0].class != Array
         
     | 
| 
       50 
     | 
    
         
            -
                        valid = false if args[1].class != Time
         
     | 
| 
       51 
     | 
    
         
            -
                        valid = false if args[2].class != Time
         
     | 
| 
       52 
     | 
    
         
            -
                        if valid and args[0].empty?
         
     | 
| 
       53 
     | 
    
         
            -
                          raise ArgumentError, "queues array cannot be empty"
         
     | 
| 
       54 
     | 
    
         
            -
                        end
         
     | 
| 
       55 
     | 
    
         
            -
                        return valid
         
     | 
| 
       56 
     | 
    
         
            -
                      end
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                      def normalize_times queues, period_start, period_end
         
     | 
| 
       59 
     | 
    
         
            -
                        if period_start > period_end
         
     | 
| 
       60 
     | 
    
         
            -
                          tmp = period_start
         
     | 
| 
       61 
     | 
    
         
            -
                          period_start = period_end
         
     | 
| 
       62 
     | 
    
         
            -
                          period_end = tmp
         
     | 
| 
       63 
     | 
    
         
            -
                        end
         
     | 
| 
       64 
     | 
    
         
            -
                        return [queues, period_start, period_end]
         
     | 
| 
       65 
     | 
    
         
            -
                      end
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
                      def parse_response
         
     | 
| 
       68 
     | 
    
         
            -
                        r = Queri.send_request(@queues, self, @period_start, @period_end)
         
     | 
| 
       69 
     | 
    
         
            -
                        xml_keys_to_human_readable_keys = self.class.key_translations.invert
         
     | 
| 
       70 
     | 
    
         
            -
                        r.each_with_index do |metric,i|
         
     | 
| 
       71 
     | 
    
         
            -
                          if i > 0
         
     | 
| 
       72 
     | 
    
         
            -
                            metric[0] = xml_keys_to_human_readable_keys[ metric[0] ]
         
     | 
| 
       73 
     | 
    
         
            -
                          end
         
     | 
| 
       74 
     | 
    
         
            -
                        end
         
     | 
| 
       75 
     | 
    
         
            -
                        r.shift
         
     | 
| 
       76 
     | 
    
         
            -
                        Hash[*r.flatten]
         
     | 
| 
       77 
     | 
    
         
            -
                      end
         
     | 
| 
       78 
30 
     | 
    
         
             
                  end
         
     | 
| 
       79 
31 
     | 
    
         
             
                end
         
     | 
| 
       80 
32 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,18 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Queri
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Stats
         
     | 
| 
       3 
3 
     | 
    
         
             
                class AnsweredCalls
         
     | 
| 
       4 
     | 
    
         
            -
                  class AnsweredCallsByDirection
         
     | 
| 
       5 
     | 
    
         
            -
                     
     | 
| 
      
 4 
     | 
    
         
            +
                  class AnsweredCallsByDirection < Queri::Stats
         
     | 
| 
      
 5 
     | 
    
         
            +
                    include CompositeReportHelpers
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                    class << self
         
     | 
| 
       8 
8 
     | 
    
         
             
                      def xml_code
         
     | 
| 
       9 
9 
     | 
    
         
             
                        AnsweredCalls.xml_code + ".AnsweredcallsByDirection"
         
     | 
| 
       10 
10 
     | 
    
         
             
                      end
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                      def query_method
         
     | 
| 
       13 
     | 
    
         
            -
                        Stats.query_method
         
     | 
| 
       14 
     | 
    
         
            -
                      end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
12 
     | 
    
         
             
                      def key_translations
         
     | 
| 
       17 
13 
     | 
    
         
             
                        Hash[
         
     | 
| 
       18 
14 
     | 
    
         
             
                          :direction_icon, " ",
         
     | 
| 
         @@ -22,52 +18,7 @@ module Queri 
     | 
|
| 
       22 
18 
     | 
    
         
             
                          :placeholder_for_bar_graph, "..."
         
     | 
| 
       23 
19 
     | 
    
         
             
                        ]
         
     | 
| 
       24 
20 
     | 
    
         
             
                      end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                      def keys
         
     | 
| 
       27 
     | 
    
         
            -
                        key_translations.keys
         
     | 
| 
       28 
     | 
    
         
            -
                      end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                    end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                    def initialize *args
         
     | 
| 
       33 
     | 
    
         
            -
                      raise ArgumentError, "expected arguments: queues(Array), period_start(Time), period_end(Time)" unless valid_args?(args)
         
     | 
| 
       34 
     | 
    
         
            -
                      @queues, @period_start, @period_end = normalize_times(*args)
         
     | 
| 
       35 
     | 
    
         
            -
                      @response = parse_response
         
     | 
| 
       36 
21 
     | 
    
         
             
                    end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                    private
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                      def valid_args? args
         
     | 
| 
       41 
     | 
    
         
            -
                        valid = true
         
     | 
| 
       42 
     | 
    
         
            -
                        valid = false if args[0].class != Array
         
     | 
| 
       43 
     | 
    
         
            -
                        valid = false if args[1].class != Time
         
     | 
| 
       44 
     | 
    
         
            -
                        valid = false if args[2].class != Time
         
     | 
| 
       45 
     | 
    
         
            -
                        if valid and args[0].empty?
         
     | 
| 
       46 
     | 
    
         
            -
                          raise ArgumentError, "queues array cannot be empty"
         
     | 
| 
       47 
     | 
    
         
            -
                        end
         
     | 
| 
       48 
     | 
    
         
            -
                        return valid
         
     | 
| 
       49 
     | 
    
         
            -
                      end
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
                      def normalize_times queues, period_start, period_end
         
     | 
| 
       52 
     | 
    
         
            -
                        if period_start > period_end
         
     | 
| 
       53 
     | 
    
         
            -
                          tmp = period_start
         
     | 
| 
       54 
     | 
    
         
            -
                          period_start = period_end
         
     | 
| 
       55 
     | 
    
         
            -
                          period_end = tmp
         
     | 
| 
       56 
     | 
    
         
            -
                        end
         
     | 
| 
       57 
     | 
    
         
            -
                        return [queues, period_start, period_end]
         
     | 
| 
       58 
     | 
    
         
            -
                      end
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
                      def parse_response
         
     | 
| 
       61 
     | 
    
         
            -
                        r = Queri.send_request(@queues, self, @period_start, @period_end)
         
     | 
| 
       62 
     | 
    
         
            -
                        xml_keys_to_human_readable_keys = self.class.key_translations.invert
         
     | 
| 
       63 
     | 
    
         
            -
                        new_keys = r.shift.map {|k| xml_keys_to_human_readable_keys[k]}
         
     | 
| 
       64 
     | 
    
         
            -
                        agent_metrics = []
         
     | 
| 
       65 
     | 
    
         
            -
                        r.each do |agent|
         
     | 
| 
       66 
     | 
    
         
            -
                          agent_metrics << Hash[new_keys.zip(agent)]
         
     | 
| 
       67 
     | 
    
         
            -
                        end
         
     | 
| 
       68 
     | 
    
         
            -
                        return agent_metrics
         
     | 
| 
       69 
     | 
    
         
            -
                      end
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
22 
     | 
    
         
             
                  end
         
     | 
| 
       72 
23 
     | 
    
         
             
                end
         
     | 
| 
       73 
24 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,18 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Queri
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Stats
         
     | 
| 
       3 
3 
     | 
    
         
             
                class AnsweredCalls
         
     | 
| 
       4 
     | 
    
         
            -
                  class AnsweredCallsByQueue
         
     | 
| 
       5 
     | 
    
         
            -
                     
     | 
| 
      
 4 
     | 
    
         
            +
                  class AnsweredCallsByQueue < Queri::Stats
         
     | 
| 
      
 5 
     | 
    
         
            +
                    include CompositeReportHelpers
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                    class << self
         
     | 
| 
       8 
8 
     | 
    
         
             
                      def xml_code
         
     | 
| 
       9 
9 
     | 
    
         
             
                        AnsweredCalls.xml_code + ".AnsweredcallsByQueue"
         
     | 
| 
       10 
10 
     | 
    
         
             
                      end
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                      def query_method
         
     | 
| 
       13 
     | 
    
         
            -
                        Stats.query_method
         
     | 
| 
       14 
     | 
    
         
            -
                      end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
12 
     | 
    
         
             
                      def key_translations
         
     | 
| 
       17 
13 
     | 
    
         
             
                        Hash[
         
     | 
| 
       18 
14 
     | 
    
         
             
                          :empty_column, " ",
         
     | 
| 
         @@ -22,52 +18,7 @@ module Queri 
     | 
|
| 
       22 
18 
     | 
    
         
             
                          :placeholder_for_bar_graph, "..."
         
     | 
| 
       23 
19 
     | 
    
         
             
                        ]
         
     | 
| 
       24 
20 
     | 
    
         
             
                      end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                      def keys
         
     | 
| 
       27 
     | 
    
         
            -
                        key_translations.keys
         
     | 
| 
       28 
     | 
    
         
            -
                      end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                    end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                    def initialize *args
         
     | 
| 
       33 
     | 
    
         
            -
                      raise ArgumentError, "expected arguments: queues(Array), period_start(Time), period_end(Time)" unless valid_args?(args)
         
     | 
| 
       34 
     | 
    
         
            -
                      @queues, @period_start, @period_end = normalize_times(*args)
         
     | 
| 
       35 
     | 
    
         
            -
                      @response = parse_response
         
     | 
| 
       36 
21 
     | 
    
         
             
                    end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                    private
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                      def valid_args? args
         
     | 
| 
       41 
     | 
    
         
            -
                        valid = true
         
     | 
| 
       42 
     | 
    
         
            -
                        valid = false if args[0].class != Array
         
     | 
| 
       43 
     | 
    
         
            -
                        valid = false if args[1].class != Time
         
     | 
| 
       44 
     | 
    
         
            -
                        valid = false if args[2].class != Time
         
     | 
| 
       45 
     | 
    
         
            -
                        if valid and args[0].empty?
         
     | 
| 
       46 
     | 
    
         
            -
                          raise ArgumentError, "queues array cannot be empty"
         
     | 
| 
       47 
     | 
    
         
            -
                        end
         
     | 
| 
       48 
     | 
    
         
            -
                        return valid
         
     | 
| 
       49 
     | 
    
         
            -
                      end
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
                      def normalize_times queues, period_start, period_end
         
     | 
| 
       52 
     | 
    
         
            -
                        if period_start > period_end
         
     | 
| 
       53 
     | 
    
         
            -
                          tmp = period_start
         
     | 
| 
       54 
     | 
    
         
            -
                          period_start = period_end
         
     | 
| 
       55 
     | 
    
         
            -
                          period_end = tmp
         
     | 
| 
       56 
     | 
    
         
            -
                        end
         
     | 
| 
       57 
     | 
    
         
            -
                        return [queues, period_start, period_end]
         
     | 
| 
       58 
     | 
    
         
            -
                      end
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
                      def parse_response
         
     | 
| 
       61 
     | 
    
         
            -
                        r = Queri.send_request(@queues, self, @period_start, @period_end)
         
     | 
| 
       62 
     | 
    
         
            -
                        xml_keys_to_human_readable_keys = self.class.key_translations.invert
         
     | 
| 
       63 
     | 
    
         
            -
                        new_keys = r.shift.map {|k| xml_keys_to_human_readable_keys[k]}
         
     | 
| 
       64 
     | 
    
         
            -
                        agent_metrics = []
         
     | 
| 
       65 
     | 
    
         
            -
                        r.each do |agent|
         
     | 
| 
       66 
     | 
    
         
            -
                          agent_metrics << Hash[new_keys.zip(agent)]
         
     | 
| 
       67 
     | 
    
         
            -
                        end
         
     | 
| 
       68 
     | 
    
         
            -
                        return agent_metrics
         
     | 
| 
       69 
     | 
    
         
            -
                      end
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
22 
     | 
    
         
             
                  end
         
     | 
| 
       72 
23 
     | 
    
         
             
                end
         
     | 
| 
       73 
24 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,18 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Queri
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Stats
         
     | 
| 
       3 
3 
     | 
    
         
             
                class AnsweredCalls
         
     | 
| 
       4 
     | 
    
         
            -
                  class AnsweredCallsByStints
         
     | 
| 
       5 
     | 
    
         
            -
                     
     | 
| 
      
 4 
     | 
    
         
            +
                  class AnsweredCallsByStints < Queri::Stats
         
     | 
| 
      
 5 
     | 
    
         
            +
                    include CompositeReportHelpers
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                    class << self
         
     | 
| 
       8 
8 
     | 
    
         
             
                      def xml_code
         
     | 
| 
       9 
9 
     | 
    
         
             
                        AnsweredCalls.xml_code + ".StintsOk"
         
     | 
| 
       10 
10 
     | 
    
         
             
                      end
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                      def query_method
         
     | 
| 
       13 
     | 
    
         
            -
                        Stats.query_method
         
     | 
| 
       14 
     | 
    
         
            -
                      end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
12 
     | 
    
         
             
                      def key_translations
         
     | 
| 
       17 
13 
     | 
    
         
             
                        Hash[
         
     | 
| 
       18 
14 
     | 
    
         
             
                          :number_of_stints, "Number of stints",
         
     | 
| 
         @@ -21,52 +17,7 @@ module Queri 
     | 
|
| 
       21 
17 
     | 
    
         
             
                          :placeholder_for_bar_graph, "..."
         
     | 
| 
       22 
18 
     | 
    
         
             
                        ]
         
     | 
| 
       23 
19 
     | 
    
         
             
                      end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                      def keys
         
     | 
| 
       26 
     | 
    
         
            -
                        key_translations.keys
         
     | 
| 
       27 
     | 
    
         
            -
                      end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                    end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                    def initialize *args
         
     | 
| 
       32 
     | 
    
         
            -
                      raise ArgumentError, "expected arguments: queues(Array), period_start(Time), period_end(Time)" unless valid_args?(args)
         
     | 
| 
       33 
     | 
    
         
            -
                      @queues, @period_start, @period_end = normalize_times(*args)
         
     | 
| 
       34 
     | 
    
         
            -
                      @response = parse_response
         
     | 
| 
       35 
20 
     | 
    
         
             
                    end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                    private
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                      def valid_args? args
         
     | 
| 
       40 
     | 
    
         
            -
                        valid = true
         
     | 
| 
       41 
     | 
    
         
            -
                        valid = false if args[0].class != Array
         
     | 
| 
       42 
     | 
    
         
            -
                        valid = false if args[1].class != Time
         
     | 
| 
       43 
     | 
    
         
            -
                        valid = false if args[2].class != Time
         
     | 
| 
       44 
     | 
    
         
            -
                        if valid and args[0].empty?
         
     | 
| 
       45 
     | 
    
         
            -
                          raise ArgumentError, "queues array cannot be empty"
         
     | 
| 
       46 
     | 
    
         
            -
                        end
         
     | 
| 
       47 
     | 
    
         
            -
                        return valid
         
     | 
| 
       48 
     | 
    
         
            -
                      end
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                      def normalize_times queues, period_start, period_end
         
     | 
| 
       51 
     | 
    
         
            -
                        if period_start > period_end
         
     | 
| 
       52 
     | 
    
         
            -
                          tmp = period_start
         
     | 
| 
       53 
     | 
    
         
            -
                          period_start = period_end
         
     | 
| 
       54 
     | 
    
         
            -
                          period_end = tmp
         
     | 
| 
       55 
     | 
    
         
            -
                        end
         
     | 
| 
       56 
     | 
    
         
            -
                        return [queues, period_start, period_end]
         
     | 
| 
       57 
     | 
    
         
            -
                      end
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
                      def parse_response
         
     | 
| 
       60 
     | 
    
         
            -
                        r = Queri.send_request(@queues, self, @period_start, @period_end)
         
     | 
| 
       61 
     | 
    
         
            -
                        xml_keys_to_human_readable_keys = self.class.key_translations.invert
         
     | 
| 
       62 
     | 
    
         
            -
                        new_keys = r.shift.map {|k| xml_keys_to_human_readable_keys[k]}
         
     | 
| 
       63 
     | 
    
         
            -
                        agent_metrics = []
         
     | 
| 
       64 
     | 
    
         
            -
                        r.each do |agent|
         
     | 
| 
       65 
     | 
    
         
            -
                          agent_metrics << Hash[new_keys.zip(agent)]
         
     | 
| 
       66 
     | 
    
         
            -
                        end
         
     | 
| 
       67 
     | 
    
         
            -
                        return agent_metrics
         
     | 
| 
       68 
     | 
    
         
            -
                      end
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
21 
     | 
    
         
             
                  end
         
     | 
| 
       71 
22 
     | 
    
         
             
                end
         
     | 
| 
       72 
23 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,18 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Queri
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Stats
         
     | 
| 
       3 
3 
     | 
    
         
             
                class AnsweredCalls
         
     | 
| 
       4 
     | 
    
         
            -
                  class CallsFullyWithinTheGivenTimeInterval
         
     | 
| 
       5 
     | 
    
         
            -
                     
     | 
| 
      
 4 
     | 
    
         
            +
                  class CallsFullyWithinTheGivenTimeInterval < Queri::Stats
         
     | 
| 
      
 5 
     | 
    
         
            +
                    include AggregateReportHelpers
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                    class << self
         
     | 
| 
       8 
8 
     | 
    
         
             
                      def xml_code
         
     | 
| 
       9 
9 
     | 
    
         
             
                        AnsweredCalls.xml_code + ".RiassFullyWithin"
         
     | 
| 
       10 
10 
     | 
    
         
             
                      end
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                      def query_method
         
     | 
| 
       13 
     | 
    
         
            -
                        Stats.query_method
         
     | 
| 
       14 
     | 
    
         
            -
                      end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
12 
     | 
    
         
             
                      def key_translations
         
     | 
| 
       17 
13 
     | 
    
         
             
                        Hash[
         
     | 
| 
       18 
14 
     | 
    
         
             
                          :calls_fully_within_the_given_time_interval, "Calls fully within the given time interval:",
         
     | 
| 
         @@ -31,51 +27,7 @@ module Queri 
     | 
|
| 
       31 
27 
     | 
    
         
             
                          :queue_position_coverage, "Coverage"
         
     | 
| 
       32 
28 
     | 
    
         
             
                        ]
         
     | 
| 
       33 
29 
     | 
    
         
             
                      end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                      def keys
         
     | 
| 
       36 
     | 
    
         
            -
                        key_translations.keys
         
     | 
| 
       37 
     | 
    
         
            -
                      end
         
     | 
| 
       38 
30 
     | 
    
         
             
                    end
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                    def initialize *args
         
     | 
| 
       41 
     | 
    
         
            -
                      raise ArgumentError, "expected arguments: queues(Array), period_start(Time), period_end(Time)" unless valid_args?(args)
         
     | 
| 
       42 
     | 
    
         
            -
                      @queues, @period_start, @period_end = normalize_times(*args)
         
     | 
| 
       43 
     | 
    
         
            -
                      @response = parse_response
         
     | 
| 
       44 
     | 
    
         
            -
                    end
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                    private
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                      def valid_args? args
         
     | 
| 
       49 
     | 
    
         
            -
                        valid = true
         
     | 
| 
       50 
     | 
    
         
            -
                        valid = false if args[0].class != Array
         
     | 
| 
       51 
     | 
    
         
            -
                        valid = false if args[1].class != Time
         
     | 
| 
       52 
     | 
    
         
            -
                        valid = false if args[2].class != Time
         
     | 
| 
       53 
     | 
    
         
            -
                        if valid and args[0].empty?
         
     | 
| 
       54 
     | 
    
         
            -
                          raise ArgumentError, "queues array cannot be empty"
         
     | 
| 
       55 
     | 
    
         
            -
                        end
         
     | 
| 
       56 
     | 
    
         
            -
                        return valid
         
     | 
| 
       57 
     | 
    
         
            -
                      end
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
                      def normalize_times queues, period_start, period_end
         
     | 
| 
       60 
     | 
    
         
            -
                        if period_start > period_end
         
     | 
| 
       61 
     | 
    
         
            -
                          tmp = period_start
         
     | 
| 
       62 
     | 
    
         
            -
                          period_start = period_end
         
     | 
| 
       63 
     | 
    
         
            -
                          period_end = tmp
         
     | 
| 
       64 
     | 
    
         
            -
                        end
         
     | 
| 
       65 
     | 
    
         
            -
                        return [queues, period_start, period_end]
         
     | 
| 
       66 
     | 
    
         
            -
                      end
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                      def parse_response
         
     | 
| 
       69 
     | 
    
         
            -
                        r = Queri.send_request(@queues, self, @period_start, @period_end)
         
     | 
| 
       70 
     | 
    
         
            -
                        xml_keys_to_human_readable_keys = self.class.key_translations.invert
         
     | 
| 
       71 
     | 
    
         
            -
                        r.each_with_index do |metric,i|
         
     | 
| 
       72 
     | 
    
         
            -
                          if i > 0
         
     | 
| 
       73 
     | 
    
         
            -
                            metric[0] = xml_keys_to_human_readable_keys[ metric[0] ]
         
     | 
| 
       74 
     | 
    
         
            -
                          end
         
     | 
| 
       75 
     | 
    
         
            -
                        end
         
     | 
| 
       76 
     | 
    
         
            -
                        r.shift
         
     | 
| 
       77 
     | 
    
         
            -
                        Hash[*r.flatten]
         
     | 
| 
       78 
     | 
    
         
            -
                      end
         
     | 
| 
       79 
31 
     | 
    
         
             
                  end
         
     | 
| 
       80 
32 
     | 
    
         
             
                end
         
     | 
| 
       81 
33 
     | 
    
         
             
              end
         
     |