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

<?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);
}
}