forked from SimplesIP/pabx-app
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
3.7 KiB
103 lines
3.7 KiB
2 years ago
|
<?php
|
||
|
|
||
|
namespace app\Models;
|
||
|
|
||
|
use app\Core\Model;
|
||
|
|
||
|
/**
|
||
|
* Description of Bilhete
|
||
|
*
|
||
|
* @author root
|
||
|
*/
|
||
|
class Bilhete extends Model
|
||
|
{
|
||
|
|
||
|
const TABLE = "pbx_bilhetes";
|
||
|
const EVENTOS_DACS = 'pbx_eventos_dacs';
|
||
|
|
||
|
public function addBilhete($calldate, $src, $dst, $duration, $billsec, $disposition, $unique = null, $forahorario = 0)
|
||
|
{
|
||
|
if ($unique == null) {
|
||
|
$unique = uniqid('', true);
|
||
|
}
|
||
|
$this->query = "INSERT INTO " . self::TABLE . " (uniqueid, calldate, src, dst, duration, billsec, disposition, fora_horario, data_bilhete) VALUES(:uniqueid, :calldate, :src, :dst, :duration, :billsec, :disposition, :fora_horario, :data_bilhete);";
|
||
|
|
||
|
$data['uniqueid'] = $unique;
|
||
|
$data['calldate'] = $calldate;
|
||
|
$data['src'] = $src;
|
||
|
$data['dst'] = $dst;
|
||
|
$data['duration'] = $duration;
|
||
|
$data['billsec'] = abs($billsec);
|
||
|
$data['disposition'] = $disposition;
|
||
|
$data['fora_horario'] = $forahorario;
|
||
|
$data['data_bilhete'] = date('Y-m-d H:i:s');
|
||
|
|
||
|
$return = $this->create($this->query, $data);
|
||
|
if ($return) {
|
||
|
return $unique;
|
||
|
}
|
||
|
|
||
|
return $return;
|
||
|
}
|
||
|
|
||
|
public function findByUniqueid($uniqueid)
|
||
|
{
|
||
|
$this->query = "SELECT * FROM " . self::TABLE . " WHERE uniqueid = :uniqueid";
|
||
|
return $this->read($this->query, ['uniqueid' => $uniqueid])->fetch();
|
||
|
}
|
||
|
|
||
|
public function findBilheteByEventosDacs($queue = null, $dataBilhete = 'now', $eventos = ['COMPLETEAGENT', 'COMPLETECALLER', 'COMPLETAAGENT', 'COMPLETACALLER', 'TRANSFER', 'ABANDON'], $agente = null, $media)
|
||
|
{
|
||
|
$this->query = "SELECT * FROM " . self::TABLE . " a
|
||
|
INNER JOIN " . self::EVENTOS_DACS . " b ON a.uniqueid = b.uid2
|
||
|
WHERE 1=1 AND evento IN(:evento) ";
|
||
|
|
||
|
$data['evento'] = is_array($eventos) ? implode(",", $eventos) : $eventos;
|
||
|
|
||
|
if ($queue) {
|
||
|
$this->query .= " AND b.fila = :queue ";
|
||
|
$data['queue'] = $queue;
|
||
|
}
|
||
|
|
||
|
if ($dataBilhete) {
|
||
|
$this->query .= " AND data_bilhete = :data_bilhete ";
|
||
|
$data['data_bilhete'] = $dataBilhete;
|
||
|
}
|
||
|
if ($media) {
|
||
|
$this->query .= " AND param2 = :param2 ";
|
||
|
$data['param2'] = $media;
|
||
|
}
|
||
|
|
||
|
if ($agente) {
|
||
|
$this->query .= " AND b.agente = :agente ";
|
||
|
$data['agente'] = $agente;
|
||
|
}
|
||
|
$this->query .= " ORDER BY calldate";
|
||
|
return $this->read($this->query, $data)->fetchAll();
|
||
|
}
|
||
|
|
||
|
public function findBilheteBySrc($src, $eventos = ['COMPLETEAGENT', 'COMPLETECALLER', 'COMPLETAAGENT', 'COMPLETACALLER', 'TRANSFER', 'ABANDON'])
|
||
|
{
|
||
|
$this->query = "SELECT * FROM " . self::TABLE . " a
|
||
|
INNER JOIN " . self::EVENTOS_DACS . " b ON a.uniqueid = b.uid2
|
||
|
WHERE 1=1 ";
|
||
|
$this->query .= " AND a.src = :src ";
|
||
|
$this->query .= " AND evento IN(:evento) ";
|
||
|
$this->query .= " ORDER BY calldate";
|
||
|
|
||
|
$data['src'] = $src;
|
||
|
$data['evento'] = is_array($eventos) ? implode(",", $eventos) : $eventos;
|
||
|
|
||
|
return $this->read($this->query, $data)->fetch();
|
||
|
}
|
||
|
|
||
|
public function updateBilheteForaHorario($uniqueid, $ramalorigem, $forahorario, $disposition)
|
||
|
{
|
||
|
$this->query = "UPDATE " . self::TABLE . " SET disposition = :disposition, fora_horario = :fora_horario, ramal_origem = :ramal_origem WHERE uniqueid = :uniqueid;";
|
||
|
$data['disposition'] = $disposition;
|
||
|
$data['fora_horario'] = $forahorario;
|
||
|
$data['ramal_origem'] = $ramalorigem;
|
||
|
$data['uniqueid'] = $uniqueid;
|
||
|
return $this->update($this->query, $data);
|
||
|
}
|
||
|
}
|