public static function getTelefones()
 {
     $telefoneDao = new TelefoneDao();
     $items = $telefoneDao->getTelefones($_GET);
     if ($items) {
         Flight::json($items);
     } else {
         Flight::halt(404, 'Nenhum telefone encontrado.');
     }
 }
 public function getFornecedores($offset, $limit, $busca = array())
 {
     $offset = $offset == null ? 0 : $offset;
     $limit = $limit == null ? 0 : $limit;
     $sql = "SELECT DISTINCT frn.* FROM `tbl_fornecedores` AS frn ";
     if (array_key_exists('ped->id', $busca) && array_key_exists('ent->id', $busca)) {
         $sql .= "LEFT JOIN tbl_pedido_fornecedor AS ped ON frn.id = ped.id_fornecedor\n\t\t\t\t\tLEFT JOIN tbl_estoque_entrada AS ent ON ped.id = ent.id_pedido_fornecedor";
     }
     if (array_key_exists('ped->id', $busca) && array_key_exists('ent->id', $busca)) {
         $sql .= " INNER JOIN tbl_produto_fornecedor AS rel ON rel.id_fornecedor = frn.id";
     }
     if (is_array($busca) && count($busca) > 0) {
         $where = prepareWhere($busca);
         $sql .= " WHERE " . $where;
     }
     if ($limit > 0) {
         $pag = $offset / $limit + 1;
         $Paginacao = new PaginacaoController($sql);
         $Paginacao->num_paginas = 10;
         $Paginacao->resultados_pagina = $limit;
         $Paginacao->paginarResultado($pag);
         $links_paginacao = $Paginacao->paginasDisponiveis($pag);
         $sql = $Paginacao->_sql_paginacao;
     }
     $select = $this->conn->prepare($sql);
     if ($select->execute()) {
         if ($select->rowCount() > 0) {
             $EstadoDao = new EstadoDao();
             $CidadeDao = new CidadeDao();
             $telefoneDao = new TelefoneDao();
             $saida['fornecedores'] = parse_arr_values($select->fetchAll(PDO::FETCH_ASSOC), 'all');
             foreach ($saida['fornecedores'] as $key => $value) {
                 $saida['fornecedores'][$key]['cidade'] = $CidadeDao->getCidade($value['cod_cidade']);
                 $saida['fornecedores'][$key]['estado'] = $EstadoDao->getEstado($value['cod_estado']);
                 $saida['fornecedores'][$key]['telefones'] = $telefoneDao->getTelefones(array('tbl_referencia' => 'tbl_fornecedores', 'id_referencia' => $value['id'], 'cplSql' => ' ORDER BY tt.id ASC'));
             }
             $saida['paginacao'] = isset($links_paginacao) ? $links_paginacao : null;
             return $saida;
         } else {
             return false;
         }
     } else {
         return false;
     }
 }
 public static function sendDataToUpdate()
 {
     $destinatarios[] = array("nome" => "Filipe Coelho", "email" => "*****@*****.**");
     // Atualiza a lista de telefones do colaborador
     if (isset($_POST['cooperator']['telefones'])) {
         $telefoneDao = new TelefoneDao();
         foreach ($_POST['cooperator']['telefones'] as $key => $telefone) {
             if (isset($telefone['flg_removido']) && $telefone['flg_removido'] === "true") {
                 if (!$telefoneDao->deleteTelefone($telefone['cod_telefone'])) {
                     Flight::halt(500, 'Erro ao excluir o telefone [(' . $telefone['num_ddd'] . ') ' . $telefone['num_telefone'] . ']');
                     die;
                 }
             } else {
                 if (isset($telefone['cod_telefone'])) {
                     $telefoneTO = new TelefoneTO();
                     $telefoneTO->cod_telefone = $telefone['cod_telefone'];
                     $telefoneTO->num_ddd = $telefone['num_ddd'];
                     $telefoneTO->num_telefone = $telefone['num_telefone'];
                     $telefoneTO->cod_tipo_telefone = $telefone['cod_tipo_telefone'];
                     if (!$telefoneDao->updateTelefone($telefoneTO)) {
                         Flight::halt(500, 'Erro ao atualizar o telefone [(' . $telefoneTO->num_ddd . ') ' . $telefoneTO->num_telefone . ']');
                         die;
                     }
                 } else {
                     if (isset($_POST['cooperator']['cod_colaborador'])) {
                         $telefoneTO = new TelefoneTO();
                         $telefoneTO->cod_colaborador = $_POST['cooperator']['cod_colaborador'];
                         $telefoneTO->num_ddd = $telefone['num_ddd'];
                         $telefoneTO->num_telefone = $telefone['num_telefone'];
                         $telefoneTO->cod_tipo_telefone = $telefone['tipoTelefone']['cod_tipo_telefone'];
                         if (!$telefoneDao->saveTelefone($telefoneTO)) {
                             Flight::halt(500, 'Erro ao salvar o telefone [(' . $telefoneTO->num_ddd . ') ' . $telefoneTO->num_telefone . ']');
                             die;
                         }
                     }
                 }
             }
         }
     }
     // Atualiza a lista de e-mails do colaborador
     if (isset($_POST['cooperator']['emails'])) {
         $emailDao = new EmailDao();
         foreach ($_POST['cooperator']['emails'] as $key => $email) {
             if (isset($email['flg_removido']) && $email['flg_removido'] === "true") {
                 if (!$emailDao->deleteEmail($email['cod_email'])) {
                     Flight::halt(500, 'Erro ao excluir o email [' . $emailTO->end_email . ']');
                     die;
                 }
             } else {
                 if (isset($email['cod_email'])) {
                     $emailTO = new EmailTO();
                     $emailTO->cod_email = $email['cod_email'];
                     $emailTO->end_email = $email['end_email'];
                     if (!$emailDao->updateEmail($emailTO)) {
                         Flight::halt(500, 'Erro ao atualizar o email [' . $emailTO->end_email . ']');
                         die;
                     }
                 } else {
                     if (isset($_POST['cooperator']['cod_colaborador'])) {
                         $emailTO = new EmailTO();
                         $emailTO->cod_colaborador = $_POST['cooperator']['cod_colaborador'];
                         $emailTO->end_email = $email['end_email'];
                         if (!$emailDao->saveEmail($emailTO)) {
                             Flight::halt(500, 'Erro ao salvar o email [' . $emailTO->end_email . ']');
                             die;
                         }
                     }
                 }
             }
         }
     }
     if (sendMail('[SIG BackOffice] Solicitação de Alteração de Dados', 'conferencia_dados.php', $destinatarios, $_POST)) {
         Flight::halt(200, 'Dados enviado com sucesso!<br/>Alterações como E-mail e Telefone serão atualizadas no próximo login.');
     } else {
         Flight::halt(500, 'Ocorreu algum erro ao tentar enviar o e-mail!<br/>Tente novamente.');
     }
 }
 public static function updateFornecedor()
 {
     $FornecedorTO = new FornecedorTO();
     $FornecedorDao = new FornecedorDao();
     $FornecedorTO->id = isset($_POST['id']) ? $_POST['id'] : NULL;
     $FornecedorTO->nome_fornecedor = isset($_POST['nome_fornecedor']) ? $_POST['nome_fornecedor'] : NULL;
     $FornecedorTO->id_empreendimento = isset($_POST['id_empreendimento']) ? $_POST['id_empreendimento'] : NULL;
     $FornecedorTO->tipo_cadastro = isset($_POST['tipo_cadastro']) ? $_POST['tipo_cadastro'] : NULL;
     $FornecedorTO->num_cpf = isset($_POST['num_cpf']) ? $_POST['num_cpf'] : NULL;
     $FornecedorTO->num_cnpj = isset($_POST['num_cnpj']) ? $_POST['num_cnpj'] : NULL;
     $FornecedorTO->num_inscricao_estadual = isset($_POST['num_inscricao_estadual']) ? $_POST['num_inscricao_estadual'] : NULL;
     $FornecedorTO->nme_fantasia = isset($_POST['nme_fantasia']) ? $_POST['nme_fantasia'] : NULL;
     $FornecedorTO->num_cep = isset($_POST['num_cep']) ? $_POST['num_cep'] : NULL;
     $FornecedorTO->nme_endereco = isset($_POST['nme_endereco']) ? $_POST['nme_endereco'] : NULL;
     $FornecedorTO->num_logradouro = isset($_POST['num_logradouro']) ? $_POST['num_logradouro'] : NULL;
     $FornecedorTO->nme_bairro = isset($_POST['nme_bairro']) ? $_POST['nme_bairro'] : NULL;
     $FornecedorTO->cod_estado = isset($_POST['cod_estado']) ? $_POST['cod_estado'] : NULL;
     $FornecedorTO->cod_cidade = isset($_POST['cod_cidade']) ? $_POST['cod_cidade'] : NULL;
     $FornecedorTO->id_banco = isset($_POST['id_banco']) ? $_POST['id_banco'] : NULL;
     $FornecedorTO->num_agencia = isset($_POST['num_agencia']) ? $_POST['num_agencia'] : NULL;
     $FornecedorTO->num_conta = isset($_POST['num_conta']) ? $_POST['num_conta'] : NULL;
     $FornecedorTO->end_complemento = isset($_POST['end_complemento']) ? $_POST['end_complemento'] : NULL;
     $FornecedorTO->id_plano_contas_padrao = isset($_POST['id_plano_contas_padrao']) ? $_POST['id_plano_contas_padrao'] : NULL;
     $telefones = isset($_POST['telefones']) && is_array($_POST['telefones']) && count($_POST['telefones']) > 0 ? $_POST['telefones'] : false;
     if ($FornecedorTO->tipo_cadastro == 'pj') {
         $FornecedorTO->num_cpf = NULL;
     } else {
         if ($FornecedorTO->tipo_cadastro == 'pf') {
             $FornecedorTO->num_cnpj = NULL;
             $FornecedorTO->num_inscricao_estadual = NULL;
             $FornecedorTO->nme_fantasia = NULL;
         }
     }
     $validator = new DataValidator();
     $validator->set_msg('O codigo do fornecedor é obrigatório')->set('id', $FornecedorTO->id)->is_required();
     if ($FornecedorTO->tipo_cadastro == 'pj' and !empty($FornecedorTO->num_cnpj) and !empty($FornecedorTO->id)) {
         $aux = $FornecedorDao->fornecedorExists(array('cplSql' => "num_cnpj = '" . $FornecedorTO->num_cnpj . "' AND id_empreendimento = " . $FornecedorTO->id_empreendimento . " AND id !=" . $FornecedorTO->id));
         $validator->set_msg('CNPJ já cadastrado')->set('num_cnpj', $aux)->is_equals(false);
     } else {
         if ($FornecedorTO->tipo_cadastro == 'pf' and !empty($FornecedorTO->num_cpf) and !empty($FornecedorTO->id)) {
             $aux = $FornecedorDao->fornecedorExists(array('cplSql' => "num_cpf = '" . $FornecedorTO->num_cpf . "' AND id_empreendimento = " . $FornecedorTO->id_empreendimento . " AND id !=" . $FornecedorTO->id));
             $validator->set_msg('CPF já cadastrado')->set('num_cpf', $aux)->is_equals(false);
         }
     }
     $validator->set_msg($FornecedorTO->tipo_cadastro == 'pj' ? 'A Razão Social é obrigatória' : 'O nome é obrigatório')->set('nome_fornecedor', $FornecedorTO->nome_fornecedor)->is_required();
     $validator->set_msg('o codigo do empreendimento é obrigatório')->set('id_empreendimento', $FornecedorTO->id_empreendimento)->is_num();
     if (!$validator->validate()) {
         Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send();
         return;
     }
     if ($FornecedorDao->updateFornecedor($FornecedorTO)) {
         $TelefoneDao = new TelefoneDao();
         if ($telefones) {
             $TelefoneDao->updateTelefones($telefones, $FornecedorTO->id);
         }
         Flight::halt(200);
     } else {
         Flight::halt(500, 'erro ao atualizar');
     }
 }
 public static function requestUpdateFornecedor()
 {
     try {
         $dados = $_POST;
         $id_empreendimento = $dados['id_empreendimento'];
         $PrestaShopDao = new PrestaShopDao($dados['id_empreendimento']);
         $ReferenciaIntegracaoDao = new ReferenciaIntegracaoDao();
         $ReferenciaFornecedorTO = new ReferenciaIntegracaoTO();
         $ReferenciaFornecedorTO->sistema_integrado = 'PrestaShop';
         $ReferenciaFornecedorTO->tabela = 'tbl_fornecedores';
         $ReferenciaFornecedorTO->id_item_referencia = $dados['fornecedor']['id'];
         $ReferenciaFornecedorTO->tipo = 'fornecedor';
         $ReferenciaFornecedorTO->id_empreendimento = $id_empreendimento;
         $referenciaFornecedor = $ReferenciaIntegracaoDao->refExists($ReferenciaFornecedorTO, true);
         if (!$referenciaFornecedor) {
             self::requestSaveFornecedor();
             return;
             //throw new Exception('Não existe uma referencia para o fornecedor #'.$dados['fornecedor']['id'], 1);
         }
         $ReferenciaEstadoTO = new ReferenciaIntegracaoTO();
         $ReferenciaEstadoTO->sistema_integrado = 'PrestaShop';
         $ReferenciaEstadoTO->tabela = 'tb_estados';
         $ReferenciaEstadoTO->id_item_referencia = $dados['address']['id_state'];
         $ReferenciaEstadoTO->tipo = 'estado';
         $referenciaEstado = $ReferenciaIntegracaoDao->refExists($ReferenciaEstadoTO, true);
         if (!$referenciaEstado) {
             throw new Exception('Não existe uma referencia para o estado #' . $dados['id_state'], 1);
         }
         $ReferenciaBrasilTO = new ReferenciaIntegracaoTO();
         $ReferenciaBrasilTO->sistema_integrado = 'PrestaShop';
         $ReferenciaBrasilTO->tipo = 'brasil';
         $referenciaBrasil = $ReferenciaIntegracaoDao->refExists($ReferenciaBrasilTO);
         if (!$referenciaBrasil) {
             throw new Exception('Não existe uma referencia para o Pais Brasil', 1);
         }
         $FornecedorTO = new stdClass();
         $FornecedorDao = new FornecedorDao();
         $FornecedorTO->id = $referenciaFornecedor['id_item'];
         $FornecedorTO->nome_fornecedor = $dados['fornecedor']['name'];
         $FornecedorTO->id_empreendimento = $id_empreendimento;
         $FornecedorTO->num_cep = $dados['address']['postcode'];
         $FornecedorTO->nme_endereco = $dados['address']['address'];
         $FornecedorTO->nme_bairro = $dados['address']['address2'];
         $FornecedorTO->cod_estado = $referenciaEstado['id_item'];
         if (!$FornecedorDao->updateFornecedor($FornecedorTO)) {
             throw new Exception('Erro ao cadastrar o fornecedor', 1);
         }
         $ReferenciaIntegracaoTO = new ReferenciaIntegracaoTO();
         $ReferenciaIntegracaoTO->sistema_integrado = 'PrestaShop';
         $ReferenciaIntegracaoTO->tabela = 'tbl_fornecedores';
         $ReferenciaIntegracaoTO->id_item = $referenciaFornecedor['id_item'];
         $ReferenciaIntegracaoTO->id_item_referencia = $dados['fornecedor']['id'];
         $ReferenciaIntegracaoTO->tipo = 'fornecedor';
         $ReferenciaIntegracaoTO->id_empreendimento = $id_empreendimento;
         if (isset($dados['address']['phone'])) {
             $ReferenciaTelefoneTO = new ReferenciaIntegracaoTO();
             $ReferenciaTelefoneTO->sistema_integrado = 'PrestaShop';
             $ReferenciaTelefoneTO->tabela = 'tbl_telefone';
             $ReferenciaTelefoneTO->id_item_referencia = $dados['fornecedor']['id'];
             $ReferenciaTelefoneTO->tipo = 'telefone_fornecedor';
             $ReferenciaTelefoneTO->id_empreendimento = $id_empreendimento;
             $referenciaTelefone = $ReferenciaIntegracaoDao->refExists($ReferenciaTelefoneTO, true);
             $TelefoneDao = new TelefoneDao();
             $telefones[0] = array('num_telefone' => $dados['address']['phone'], 'tbl_referencia' => 'tbl_fornecedores');
             if ($referenciaTelefone) {
                 $telefones[0]['id'] = $referenciaTelefone['id_item'];
                 if (!$TelefoneDao->updateTelefones($telefones, $referenciaFornecedor['id_item'])) {
                     throw new Exception('erro ao atualizar telefones do fornecedor', 1);
                 }
             } else {
                 $TelefoneTO = new TelefoneTO();
                 $TelefoneTO->tbl_referencia = 'tbl_fornecedores';
                 $TelefoneTO->id_referencia = $referenciaFornecedor['id_item'];
                 $TelefoneTO->num_telefone = $dados['address']['phone'];
                 $id_telefone = $TelefoneDao->saveTelefone($TelefoneTO);
                 if (!$id_telefone) {
                     throw new Exception('erro ao inserir telefone do fornecedor', 1);
                 }
                 $ReferenciaTelefoneTO->id_item = $id_telefone;
                 if (!$ReferenciaIntegracaoDao->save($ReferenciaTelefoneTO)) {
                     throw new Exception('erro ao inserir referencia', 1);
                 }
             }
         }
     } catch (Exception $e) {
         $log = new KLogger("logs/logErrorPrestaShop.txt", KLogger::DEBUG);
         $log->LogError($e->getMessage() . '- file:' . $e->getFile() . ' - line:' . $e->getLine());
         $log->LogDebug(json_encode($_POST));
         $log->LogJunp();
         Flight::halt(500, $e->getMessage() . '- file:' . $e->getFile() . ' - line:' . $e->getLine());
     }
 }