<?php

class Manual_Model_ManualUsuarios extends Agro_Db_Table_Abstract {
    protected $_schema = 'sistema';
    protected $_name = 'manual_usuarios';
    protected $_primary = array(id_manual, id_usuario);
    public $_paginator = false;

    public function save($idManual, $idUsuario) {
        $Row = $this->find($idManual, $idUsuario)->current();

        if (!$Row) $Row = $this->createRow();

        $Row->id_manual = $idManual;
        $Row->id_usuario = $idUsuario;

        return $Row->save();
    }

    public function clearUsuarios($id) {
        $Corretores = new Sistema_Model_Corretores();
        $Prepostos = new Sistema_Model_Prepostos();
        $where[] = "fl_ativo=true";
        $corretores = $Corretores->fetchAll(implode(" and ", $where), "ds_nome_corretor")->toArray();

        try {
            foreach ($corretores as $corretor) {
                $prepostos = $Prepostos->fetchAll("id_corretor = {$corretor['id']}", "ds_nome_preposto");
                foreach ($prepostos as $preposto) {
                    $ret = $this->_db->query("delete from sistema.manual_usuarios where id_manual = $id and id_usuario = {$preposto['id_usuario']}");
                }
                $ret = $this->_db->query("delete from sistema.manual_usuarios where id_manual = $id and id_usuario = {$corretor['id_usuario']}");
            }
            return $ret;
        } catch (Exception $e) {
            return false;
        }
    }

    public function clearEmpresas($id) {
        $Funcionarios = new Sistema_Model_Funcionarios();
        $ModelVitoriasEmpresas = new Sistema_Model_VistoriasEmpresas();
        $VistoriasEmpresas = $ModelVitoriasEmpresas->getNomeVistoriaEmpresas();

        try {
            foreach ($VistoriasEmpresas as $empresa) {
                $funcionarios = $Funcionarios->getVistoriadores($empresa['id']);
                foreach ($funcionarios as $funcionario) {
                    $ret = $this->_db->query("delete from sistema.manual_usuarios where id_manual = $id and id_usuario = {$funcionario['id_usuario']}");
                }
            }
            return $ret;
        } catch (Exception $e) {
            return false;
        }
    }

    public function clearFuncionarios($id) {
        $ModelFuncionarios = new Sistema_Model_Funcionarios();
        $Agro = $ModelFuncionarios->fetchAll($ModelFuncionarios->getData("e.cpf_cnpj = '03.486.745/0001-09' AND f.fl_ativo = true AND f.fl_del = false"), "id_usuario")->toArray();

        try {
            foreach ($Agro as $func) {
                $ret = $this->_db->query("delete from sistema.manual_usuarios where id_manual = $id and id_usuario = {$func['id_usuario']}");
            }
        } catch (Exception $e) {
            return false;
        }
    }

    public function getUsuariosRelacionados($idManual) {
        $select = $this->select()->distinct(true)->setIntegrityCheck(false);
        $select->where('id_manual = ?', $idManual);
        $ret = array();
        $Rs = $this->fetchAll($select);
        if ($Rs->count()) {
            foreach ($Rs as $Row) {
                $ret[] = $Row->id_usuario;
            }
        }

        return $ret;
    }

    public function getUsuariosByEmpresasRelacionadas($idManual) {
        $ret = array();
        $select = $this->select()->distinct(true)->setIntegrityCheck(false);
        $select->from( array('mu' => 'sistema.manual_usuarios'), null);
        $select->join( array('u' => 'sistema.usuarios'), 'u.id = mu.id_usuario', null);
        $select->join( array('f' => 'sistema.funcionarios'), 'f.id_usuario = u.id', null);
        $select->join( array('e' => 'sistema.empresas'), 'e.id = f.id_empresa', 'e.id as id_empresa');
        $select->where('u.fl_ativo = true');
        $select->where('mu.id_manual = ?', $idManual);
        $Rs = $this->fetchAll($select);
        if ($Rs->count() > 0) {
            foreach ($Rs as $Row) {
                $ret[] = $Row->id_empresa;
            }
        }

        return $ret;
    }
    
    public function clear($id) {
        try {
            return $this->_db->query("delete from sistema.manual_usuarios where id_manual = $id");
        } catch (Exception $e) {
            return false;
        }
    }
}
