<?php

class Fila extends CI_Model
{

    public function __construct()
    {
        parent::__construct();
    }

    public function getFilaTV($ip)
    {
		$sql = "SELECT * FROM PR_GKLTV('$ip')";
		$query = $this->db->query($sql);
		
		$sql1 = "SELECT * FROM PR_GKLTV_ULTIMOCHAMADO('$ip')";
		$query1 = $this->db->query($sql1);
		$rs = $query1->result();
		
		$_SESSION["senha1"] = $rs[0]->NOMEPACIENTE;
		$_SESSION["guiche1"] = $rs[0]->GUICHE;

		$_SESSION["senha2"] = $rs[1]->NOMEPACIENTE; ;
		$_SESSION["guiche2"] = $rs[1]->GUICHE;

		$_SESSION["senha3"] = $rs[2]->NOMEPACIENTE; ;
		$_SESSION["guiche3"] = $rs[2]->GUICHE;
		
		$_SESSION["senha4"] = $rs[3]->NOMEPACIENTE;
		$_SESSION["guiche4"] = $rs[3]->GUICHE;

		$_SESSION["senha5"] = $rs[4]->NOMEPACIENTE; ;
		$_SESSION["guiche5"] = $rs[4]->GUICHE;

		$_SESSION["senha6"] = $rs[5]->NOMEPACIENTE; ;
		$_SESSION["guiche6"] = $rs[5]->GUICHE;
		
		$_SESSION["senha7"] = $rs[6]->NOMEPACIENTE; ;
		$_SESSION["guiche7"] = $rs[6]->GUICHE;
		
		$_SESSION["senha8"] = $rs[7]->NOMEPACIENTE; ;
		$_SESSION["guiche8"] = $rs[7]->GUICHE;
		
		$_SESSION["senha9"] = $rs[8]->NOMEPACIENTE;
		$_SESSION["guiche9"] = $rs[8]->GUICHE;

		$_SESSION["senha10"] = $rs[9]->NOMEPACIENTE; ;
		$_SESSION["guiche10"] = $rs[9]->GUICHE;

		$_SESSION["senha11"] = $rs[10]->NOMEPACIENTE; ;
		$_SESSION["guiche11"] = $rs[10]->GUICHE;
		
		$_SESSION["senha12"] = $rs[11]->NOMEPACIENTE; ;
		$_SESSION["guiche12"] = $rs[11]->GUICHE;

		return $this->utf8EncodeArray($query->result());
	}

    public function setFilaTVChamado($handleFila){
        $data = array(
            'SITUACAO' => 4
        );

        $this->db->where('HANDLE', $handleFila);
        $this->db->where('SITUACAO', 2);

        return $this->db->update('GK_FILANUMEROS', $data);

    }

    public function getAllFila()
    {
        $ip = $_SERVER['REMOTE_ADDR'];

        $this->db->select('PR_GKLFILAS.*');
        $this->db->from('PR_GKLFILAS');

        if (CONTROLE_MAQUINA == 'S') {
            $this->db->join('GK_FILADEVICES', 'PR_GKLFILAS.HANDLE = GK_FILADEVICES.FILA');
            $this->db->join('GK_DEVICES', 'GK_FILADEVICES.DEVICE = GK_DEVICES.HANDLE');
            $this->db->where(['GK_DEVICES.IP' => $ip]);
        }

        $query = $this->db->get();

        return $query->result();
    }

    public function getAtendimentoWhere($condicaoArray)
    {
        $query = $this->db->get_where('VW_GK_ATENDIMENTOS ', $condicaoArray);

        return $query->result();
    }

    public function getPacientePorDataNascimento($dataNascimento)
    {
        $this->db->select('HANDLE, NOME, DATANASCIMENTO, CPF, PROTOCOLO, LOGRADOURO');
        $this->db->where(['DATANASCIMENTO' => $dataNascimento]);
        $this->db->order_by('NOME', 'asc');
        $query = $this->db->get('CL_PACIENTES');

        return $query->result();
    }

    public function getAtendimentoPorPaciente($condicaoArray)
    {

        $this->db->select_min('HANDLE');
        //$this->db->select('min(HANDLE) as HANDLE, NOMEPACIENTE, DATANASCIMENTO, NOMERECURSO, LOCALIZACAO, NOMEPROCEDIMENTO, DATA, TELEFONE, TIPOSERVICO');
        $this->db->select(['NOMEPACIENTE']);
        $this->db->where($condicaoArray);
        $this->db->group_by("NOMEPACIENTE");
        $query = $this->db->get('VW_GK_ATENDIMENTOS');

        return $query->result();
    }

    public function geraSenha($fila, $datanascimento, $nome, $handlePaciente)
    {
        $sql = "SELECT * FROM PR_GKLGERASENHA(?,?,?,?)";
        $query = $this->db->query($sql, [$fila, $datanascimento, utf8_decode($nome), $handlePaciente]);

        //Retorna array da senha, caso queira a senha por inteiro informar no retorno da fun��o [0]->HANDLESENHA
        return $query->result();
    }

    public function listaEspera()
    {
        $sql = "SELECT NOMEFILA,NOMEPACIENTE,HORARETIRADA FROM PR_GKLPEGAESPERA(?) ORDER BY NOMEFILA, HORARETIRADA ASC";
        $query = $this->db->query($sql, ['TABLET']);
        return $query->result();
    }

    public function trocaSituacaoAtendimento($atendimento, $senha)
    {
        return $this->db->query("EXECUTE PROCEDURE PR_GK_TROCASITUACAOATEND($atendimento,$senha)");
    }

    public function trocaSituacaoAtendimentoRetorno($atendimento)
    {
        return $this->db->query("EXECUTE PROCEDURE PR_GK_TROCASITUACAOATEND_RET($atendimento)");
    }

    public function utf8EncodeArray($results){
        $result = null;
        foreach($results as $key => $value){
            $result[$key] = array_map("utf8_encode", (array)$results[$key] );
        }

        return $result;
    }

}
