<?php



/* ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1); */

include_once 'lib/Client.php';


define('KEY', '****');
define('SECRET', '***');


/* дата в формате - ГГГГ-ММ-ДД ЧЧ:ММ:СС */

$cur_day_of_year_date = date("Y-m-d");

$start_date = $cur_day_of_year_date . " 08:00:00";

if ($_GET['download_from_page'] == 1) {
    
    /* вызов из скрипта - ajax запрос */
    
    $cur_hour = date("H");
    
    if ($cur_hour < 23) {
        
        $cur_hour++;
    }
    
    $end_date = $cur_day_of_year_date . " " . $cur_hour . ":00:00";
    
} else {

$end_date = $cur_day_of_year_date . " 19:00:00";
}



$params = array(
    'start' => $start_date,
    'end' => $end_date
     );

$zd = new \Zadarma_API\Client(KEY, SECRET);
$answer = $zd->call('/v1/statistics/pbx/', $params);

$answerObject = json_decode($answer, true);

$stats_data = $answerObject['stats'];

$i = 0;

foreach ($stats_data as $one_statistic) {

$data_start = $one_statistic['callstart'];    

$amount_of_ms = strtotime($data_start);

$stats_data[$i]['callstart'] = $amount_of_ms;

$i++;
}


/* добавление к данным статистики в mysql данных из zadarma */


include 'db_inc.php';


try {
	$sql = 'SELECT id, date, time, Fio_diler, tel_client, id_of_zvonok, bron_zvonka_on_future FROM statistica_data WHERE type_of_zvonok != "ушедший с сайта клиент" ';
	$s = $pdo -> query ($sql);
	
} catch (PDOException $e) {
	$error = "Произошла ошибка - " . $e -> getMessage();
    echo $error;
    exit();
}

$number_of_data = 0;


/* делаю выборку без даты - предполагаю, что этот скрипт будет запускаться каждый день и за предыдущие дни все данные уже будут обновлены соответствующей статистикой */


foreach ($s as $row) {
    
    $cur_id_of_zvonok = $row['id_of_zvonok'];
    
    $cur_bron_zvonka_on_future = $row['bron_zvonka_on_future'];
    
    if ( ( ($cur_id_of_zvonok == NULL) || ($cur_id_of_zvonok == "NULL") ) && ($cur_bron_zvonka_on_future == "-") ) {
           
    
    $number_of_data++;
    
    } else {
    
    continue;
    }
    
    $cur_id = $row['id'];
    
    $one_zapis_sio_diler = $row['Fio_diler'];
    
    
    $number_of_ats_diler; 
    
    try {
	$sql = 'SELECT telephone FROM map_main_table WHERE agent = :agent';
	$s = $pdo -> prepare ($sql);
	$s -> bindValue(':agent', $one_zapis_sio_diler);
	$s -> execute();
	
} catch (PDOException $e) {
	$error = "Произошла ошибка - " . $e -> getMessage();
    echo $error;
    exit();
}

   foreach ($s as $row_2) {
       
   $number_of_ats_diler = $row_2['telephone'];    
   }
    
    
    $one_zapis_tel_client = $row['tel_client'];
    
    $number_inside = substr($one_zapis_tel_client, 4, 3);
    
    $number_inside_2 = substr($one_zapis_tel_client, 9, 3);
    $number_inside_3 = substr($one_zapis_tel_client, 13, 2);
    $number_inside_4 = substr($one_zapis_tel_client, 16, 2);
    
    $one_zapis_tel_client = "7" . $number_inside . $number_inside_2 . $number_inside_3 . $number_inside_4;
    
    
    
    $one_zapid_date = $row['date'];
    $one_zapid_time = $row['time'];
    
    $one_zapis_date_mysql = $one_zapid_date . " " . $one_zapid_time;
    
    $number_of_ms = strtotime($one_zapis_date_mysql);
    
    $number_of_ms -= 5;
    $number_of_ms_end = $number_of_ms + 10;
    
    $stop_for = 0;
    
    
    for ($i = $number_of_ms; $i <= $number_of_ms_end; $i++) {
    
    
    /* echo "next_for_iteration";
    echo "<br>";
    echo "<br>";
    echo "<br>"; */
    
    if ($stop_for == 1) {
        
    break;    
    }
    
    foreach ($stats_data as $one_data_of_statistic) {
    
    $cur_time_statistic_data = $one_data_of_statistic['callstart']; 

    /* echo $cur_time_statistic_data;
    echo "<br>";
    echo $i;
    echo "<br>";
    echo "<br>";
    echo "<br>"; */
    
    
    if ($cur_time_statistic_data == $i) {
    
    $sip_number = $one_data_of_statistic['sip'];
    
    /* $from_caller = $one_data_of_statistic['from']; */
    
    /* echo $from_caller;
    echo "<br>";
    echo $one_zapis_tel_client;
    exit(); */
    
    if ($sip_number == $number_of_ats_diler) {
        
        
    /* это нужная запись */    
    
    $length_of_calling = $one_data_of_statistic['seconds'];
    $status_of_calling = $one_data_of_statistic['disposition'];
    $id_of_caling = $one_data_of_statistic['call_id'];

    
   try {
	$sql = 'UPDATE statistica_data SET id_of_zvonok = :id_of_zvonok, resultat_zvonka = :resultat_zvonka, length_of_call = :length_of_call WHERE id = :id';
	$s = $pdo -> prepare ($sql);
	$s -> bindValue(':id_of_zvonok', $id_of_caling);
    $s -> bindValue(':resultat_zvonka', $status_of_calling);
    $s -> bindValue(':length_of_call', $length_of_calling);
    $s -> bindValue(':id', $cur_id);
	$s -> execute();
	
} catch (PDOException $e) {
	$error = "Произошла ошибка - " . $e -> getMessage();
    echo $error;
    exit();
}

  $params = array(
    'call_id' => $id_of_caling,
    'lifetime' => "5184000"
     );

$zd = new \Zadarma_API\Client(KEY, SECRET);
$answer = $zd->call('/v1/pbx/record/request/', $params);

$answerObject = json_decode($answer, true);

$link_of_mp3 = $answerObject['link'];

try {
	$sql = 'UPDATE statistica_data SET link_to_mp3 = :link_to_mp3 WHERE id = :id';
	$s = $pdo -> prepare ($sql);
    $s -> bindValue(':link_to_mp3', $link_of_mp3);
    $s -> bindValue(':id', $cur_id);
	$s -> execute();
	
} catch (PDOException $e) {
	$error = "Произошла ошибка - " . $e -> getMessage();
    echo $error;
    exit();
}
    

    $stop_for = 1;
    break;
        
    
    
    }
    
        
    }
    
    }
        
        
    }
   
}


if ($_GET['download_from_page'] == 1) {
    
    /* ajax-запрос */
    
    if ($number_of_data) {
        
    echo "Статистика обновилась.";    
    } else {
        
    echo "Все данные уже обновлены. Данных для обновления нет.";     
    }
    
}

?>