Newer
Older
ubFramework / Portal / docroot / user / voip / breakdown_json.php
@Christopher W. Olsen Christopher W. Olsen on 10 Dec 2017 6 KB Cleaning Up Making It A Sub Module
<?php

/**
 * ****************************************************************************************
 * Copyright (c) 2013 Christopher W.
 * Olsen <cwolsen@ubixtechnologies.com>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification, are
 * permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice, this list of
 * conditions, the following disclaimer and the list of authors. Redistributions in binary
 * form must reproduce the above copyright notice, this list of conditions, the following
 * disclaimer and the list of authors in the documentation and/or other materials provided
 * with the distribution. Neither the name of the uBix Cube Project nor the names of its
 * contributors may be used to endorse or promote products derived from this software
 * without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
 * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * $Id: index_json.php 60 2015-11-12 03:06:31Z reddawg $
 *
 * ***************************************************************************************
 */

/* Main include info */
ini_set ( 'include_path', $_SERVER ['DOCUMENT_ROOT'] . "/include/" );
include ("config.php");

$ubF->session->Validate_JSON ( 'U_V_', 1 );

if (! isset ( $form_data ['req'] ))
  $form_data ['req'] = - 1;

$_day = 60 * 60 * 24;

$rData ['authenticated'] = $ubF->session->auth_data ['authenticated'];

switch ($form_data ['req']) {
  case 'call_history' :
    $hDays = (isset ( $form_data ['days'] )) ? $form_data ['days'] : 30;
    $_time = time () - ($_day * $hDays);
$_time = time() - ($_day * 7);
    $query = "SELECT count(calldate) as total_calls, sum(CASE WHEN dcontext LIKE '%-out' THEN 1 ELSE 0 END) as outbound_calls, sum(CASE WHEN dcontext NOT LIKE '%-out' THEN 1 ELSE 0 END) as inbound_calls, DATE_FORMAT(calldate, '%m-%d-%y') as statDay FROM cdr_master WHERE calldate >= '" . date ( "Y-m-d 00:00:00", $_time ) . "' AND calldate <= '" . date ( "Y-m-d 23:59:59" ) . "' AND accountcode = '" . $ubF->session->account_code . "' GROUP BY YEAR(calldate), MONTH(calldate), DAY(calldate) ORDER BY calldate ASC";
    $query = "SELECT count(calldate) as total_calls, sum(CASE WHEN dcontext LIKE '%-out' THEN 1 ELSE 0 END) as outbound_calls, sum(CASE WHEN dcontext NOT LIKE '%-out' THEN 1 ELSE 0 END) as inbound_calls, DATE_FORMAT(calldate, '%m-%d-%y') as statDay, IF (INSTR(channel, 'SIP/" . $ubF->session->account_code . "'),SUBSTRING_INDEX(SUBSTRING_INDEX(channel, '-',1),'SIP/" . $ubF->session->account_code . "',-1), SUBSTRING_INDEX(SUBSTRING_INDEX(dstchannel, '-', 1),'SIP/epg',-1)) AS ext,channel,dstchannel FROM cdr_master WHERE calldate >= '" . date ( "Y-m-d 00:00:00", $_time ) . "' AND calldate <= '" . date ( "Y-m-d 23:59:59" ) . "' AND accountcode = '" . $ubF->session->account_code . "' AND (channel like 'SIP/" . $ubF->session->account_code . "%' or dstchannel like 'SIP/" . $ubF->session->account_code . "%') GROUP BY YEAR(calldate), MONTH(calldate), DAY(calldate), ext ORDER BY calldate ASC";
    
    $res = $ubF->DB ['cdr']->query ( $query );
    
    $labels = array ();
    $exts = array ();
    
    for($i = $res->num_rows; $i > 0; $i --) {
      $qData = $res->fetch_row ();
      $exts [$qData[4]] = 0;

      $labels [$qData[3]][$qData [4]]['total_calls'] = $qData [0];
      $labels [$qData[3]][$qData [4]]['outbound_calls'] = $qData [1];
      $labels [$qData[3]][$qData [4]]['inbound_calls'] = $qData [2];
/*
      $exts[$qData [4]][$qData [3]] ['total_calls'] = $qData [0];
      $exts[$qData [4]][$qData [3]] ['outbound_calls'] = $qData [1];
      $exts[$qData [4]][$qData [3]] ['inbound_calls'] = $qData [2];
*/
      
    }
    
    foreach ($labels as $key => $val ) {
      $rData ['data'] ['labels'] [] = $key;
      foreach ($exts as $k){
        $labels [$key][$k]['total_calls'] += 0;
        $labels [$key][$k]['outbound_calls'] += 0;
        $labels [$key][$k]['inbound_calls'] += 0;
      }
    }

    foreach ($exts as $k => $ev) {
      foreach ($labels as $l => $val) {
        $rData ['data']['ext'] [$k] ['total_calls'][] = $val[$k]['total_calls'];
        $rData ['data']['ext'] [$k] ['outbound_calls'][] = $val[$k]['outbound_calls'];
        $rData ['data']['ext'] [$k] ['inbound_calls'][] = $val[$k]['inbound_calls'];
      }
    }
      
      /*
     * $rData ['data'] ['label'] [] = $qData [4];
     * $rData ['data'] ['total_calls'] [] = $qData [0];
     * $rData ['data'] ['outbound_calls'] [] = $qData [1];
     * $rData ['data'] ['inbound_calls'] [] = $qData [2];
     */
    
    break;
  case 'ytd_history' :
    $query = "SELECT count(calldate) as total_calls, sum(CASE WHEN dcontext LIKE '%-out' THEN 1 ELSE 0 END) as outbound_calls, sum(CASE WHEN dcontext NOT LIKE '%-out' THEN 1 ELSE 0 END) as inbound_calls, DATE_FORMAT(calldate, '%m-%d-%y') as statDay FROM cdr_master WHERE calldate >= '" . date ( "Y-01-01 00:00:00" ) . "' AND calldate <= '" . date ( "Y-12-31 23:59:59" ) . "' AND accountcode = '" . $ubF->session->account_code . "' GROUP BY WEEK(calldate) ORDER BY calldate ASC";
    
    $res = $ubF->DB ['cdr']->query ( $query );
    
    for($i = $res->num_rows; $i > 0; $i --) {
      $qData = $res->fetch_row ();
      $rData ['data'] ['labels'] [] = $qData [3];
      $rData ['data'] ['total_calls'] [] = $qData [0];
      $rData ['data'] ['outbound_calls'] [] = $qData [1];
      $rData ['data'] ['inbound_calls'] [] = $qData [2];
    }
    
    break;
  default :
    $rData ['data'] = Array (
        0 
    );
    break;
}

print json_encode ( $rData );

?>