Newer
Older
ubFramework / Portal / cron / voip / voip_stats_cron.php
@Christopher W. Olsen Christopher W. Olsen on 10 Dec 2017 2 KB Cleaning Up Making It A Sub Module
#!/usr/local/bin/php

<?php
/*
 * 
 * (c) 2014 Christopher Olsen <cwolsen@uBixTechnologies.com>
 * 
 * $Id: voip_stats_cron.php 1800 2014-11-30 03:36:43Z reddawg $
 * 
 */

include("/usr/web/sites/manage.ubixtechnologies.net/include/cron_config.php");

$cron_name = "voip_stats_cron";

$data['cron']->init($cron_name);

if (isset($argv[1])) {
  $r_date = date("Y-m-d", strtotime($argv[1]));
  $r_time = strtotime($argv[1]);
}
else {
  $r_date = date("Y-m-d", strtotime("yesterday"));
  $r_time = strtotime("yesterday");
}

$bTime  = time();

$query = "SELECT aid, voip_code FROM accounts WHERE voip_code != 'NA'";
$uResult = $data['ubix_db']->query($query);
  
while ($uData = $uResult->fetch_assoc()) {

  $query = "SELECT count(*) as total_calls, SUM(billsec) as total_talk, disposition FROM cdr_master WHERE calldate >= '" . $r_date . " 00:00:00' AND calldate <= '" . $r_date . " 23:59:59' AND accountcode = '" . strtolower($uData['voip_code']) . "' GROUP BY disposition";
  $data['cron']->log("[$query]");
  $cResult = $data['cdr_db']->query($query);

  $total_calls = 0;
  $total_talk  = 0;
  $answered    = 0;
  $unanswered  = 0;
  $busy        = 0;
  $average     = 0;
  
  while ($cData = $cResult->fetch_assoc()) {
    $total_calls += $cData['total_calls'];
    $total_talk  += $cData['total_talk'];

    switch ($cData['disposition']) {
      case 'NO ANSWER':
      	$unanswered = $cData['total_calls'];
      	break;
      case 'ANSWERED':
      	$answered = $cData['total_calls'];
        break;
      case 'BUSY':
      	$busy = $cData['total_calls'];
        break;
    }
  }
  $cResult->free();

  if ($total_talk != 0) 
    $average = $total_talk/$total_calls;
  else
    $average = 0;
  
  $query = "REPLACE INTO voip_stats (voip_code, date, total_calls, total_talk, average_talk, answered, unanswered, busy) VALUES('" . $uData['voip_code'] . "', " . $r_time . ", $total_calls, $total_talk, $average, $answered, $unanswered, $busy)";
  $data['ubix_db']->query($query);
}

$uResult->free();

$query = "UPDATE system_var SET value = '" . $bTime . "' WHERE name = 'voip_stats_cron_last_run'";
$data['ubix_db']->query($query);

$data['cron']->log("Adjust System Var: [$query]\n");

$data['cron']->finish();
  
?>