<?php

$stconn = "host=localhost port=5432 dbname=clinux_megaimagem user=clinux password=system98";
$dbconn = pg_connect($stconn);

error_reporting(0);
ini_set("display_errors", "1");
require_once "lib/nusoap.php";

$server = new nusoap_server();

$server->configureWSDL("futurotecWebserviceX", "urn:futurotecWebserviceX");

################################################################################

$server->register("notificarLigacao",
    array("idLigacao" => "xsd:string", "callerid" => "xsd:string", "cidade" => "xsd:string", "uf" => "xsd:string", "nomeOpcaoFila" => "xsd:string", "ramal" => "xsd:string", "matricula" => "xsd:string", "datahoraLigacao" => "xsd:string"),
    array("return"  => "xsd:string"),
    "urn:futurotecWebserviceX",
    "urn:futurotecWebserviceX#notificarLigacao",
    "rpc",
    "encoded",
    "Notifica o clinux o recebimento de uma ligacao"
);

function notificarLigacao($idLigacao, $callerid, $cidade, $uf, $nomeOpcaoFila, $ramal, $matricula, $datahoraLigacao) {

    global $dbconn;    

    $sql = sprintf("select 1 from ff_ligacao where id_ligacao = '%s' and nr_ramal = '%s'", $idLigacao, $ramal);
    $qid = pg_query($dbconn, $sql); 
    if (pg_num_rows($qid) == 0) {

    if ($datahoraLigacao == "") {
      $hora = "null";
    } else {
      $hora = date("'Ymd H:i:s'", $datahoraLigacao);
    }
    
    if (substr($callerid, 0, 1) == '0') {
      $callerid = substr($callerid, 1);
    }

    $sql = sprintf("insert into ff_ligacao (id_ligacao, id_caller, ds_cidade, ds_uf, ds_opcao, nr_ramal, nr_matricula, dt_inicio, dt_data) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', %s, now())", $idLigacao, $callerid, $cidade, $uf, $nomeOpcaoFila, $ramal, $matricula, $hora);
    $qid = pg_query($dbconn, $sql); 
    return pg_affected_rows($qid);

    } else {
      return 0;
    }
}

################################################################################

$server->register("notificarFimLigacao",
    array("idLigacao" => "xsd:string", "statusLigacao" => "xsd:int", "tempoAguardando" => "xsd:int", "tempoAtendimento" => "xsd:int", "datahoraFinalizacao" => "xsd:string"),
    array("return"  => "xsd:string"),
    "urn:futurotecWebserviceX",
    "urn:futurotecWebserviceX#notificarFimLigacao",
    "rpc",
    "encoded",
    "Notifica o clinux o fim de uma ligacao"
);

function notificarFimLigacao($idLigacao, $statusLigacao, $tempoAguardando, $tempoAtendimento, $datahoraFinalizacao) {
    global $dbconn;    
    $sql = sprintf("update ff_ligacao set dt_fim = '%s', nr_espera = %d, nr_ligacao = %d, nr_status = '%d' where id_ligacao = '%s'", date("Ymd H:i:s", $datahoraFinalizacao), $tempoAguardando, $tempoAtendimento, $statusLigacao, $idLigacao);
    $qid = pg_query($dbconn, $sql); 
    return pg_affected_rows($qid);
}

################################################################################

$server->register("notificarConfirmacaoAgenda",
    array("idClinux" => "xsd:int", "opcaoDigitada" => "xsd:int"),
    array("return"  => "xsd:string"),
    "urn:futurotecWebserviceX",
    "urn:futurotecWebserviceX#notificarConfirmacaoAgenda",
    "rpc",
    "encoded",
    "Notifica o clinux a opcao digitada na confirmacao da agenda"
);

function notificarConfirmacaoAgenda($idClinux, $opcaoDigitada) {
    global $dbconn;    
    $sql = sprintf("update atendimentos set ds_futurofone = %d where cd_atendimento = %d", $opcaoDigitada, $idClinux);
    $qid = pg_query($dbconn, $sql); 
    return pg_affected_rows($qid);
}

################################################################################

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : "";

$server->service($HTTP_RAW_POST_DATA);

?>