public function alterarAction() { try { $conexao = $this->conexao->getConexao(); //$redirecionar = montaRedirect($_SERVER["QUERY_STRING"], array("id", "acao")); $breadcrumbs = array(); $dadosUsuario = $this->dao->findByPk($conexao, "usuarios", getVariavel("id")); // usuário só poderá alterar os dados dele mesmo if ($dadosUsuario["id"] != $_SESSION[PREFIX . "loginId"]) { throw new Exception("Você não tem permissão para atualizar dados de outros usuários"); } $breadcrumbs[] = array($dadosUsuario["nome"] => "", "Alterar dados" => ""); // armazena a senha atual em uma variável $senhaAtual = $dadosUsuario["senha"]; $novaSenha = $dadosUsuario["senha"]; // se submeteu dados if (count($_POST) > 0) { $redirecionar = NULL; $dados = $_POST; // todos os dados são obrigatórios $obrigatorios = array("nome" => array("tipo" => "input", "nome" => "Nome"), "login" => array("tipo" => "input", "nome" => "Login"), "email" => array("tipo" => "input", "nome" => "E-mail")); // se o usuário informar a nova senha, deverá informar a senha atual if (!empty($dados["novaSenha"])) { $obrigatorios["senhaAtual"] = array("tipo" => "input", "nome" => "Senha atual"); } // valida $mensagem = validaPost($obrigatorios, $dados); if (!empty($mensagem)) { throw new Exception($mensagem); } // recebe e codifica a senha atual $dados["senhaAtual"] = !empty($dados["senhaAtual"]) ? md5(trim($dados["senhaAtual"])) : $senhaAtual; if ($dados["senhaAtual"] != $senhaAtual) { throw new Exception("Senha atual não confere"); } $dados["senha"] = $dados["novaSenha"] = !empty($dados["novaSenha"]) ? md5(trim($dados["novaSenha"])) : $novaSenha; $dados = retiraDoArray(array("novaSenha", "senhaAtual"), $dados); $dados = $this->dao->salva($conexao, "usuarios", $dados); // adiciona nos logs //$this->logDAO->adicionar ($conexao, "alterou", "dados", $_SESSION[PREFIX . "loginNome"], $dados["nome"], "Usuário atualizou seus dados."); $conexao->commit(); $conexao->disconnect(); setMensagem("info", "Dados atualizados"); Application::redirect('?modulo=index&acao=alterar&id=' . $dados["id"]); exit; } } catch (Exception $e) { $conexao->rollback(); setMensagem("error", $e->getMessage()); if ($redirecionar != NULL) { Application::redirect($redirecionar); exit; } } $conexao->disconnect(); $view = new View($_GET["modulo"], "extendido", "alterar.phtml"); $view->setParams(array("title" => getTitulo($breadcrumbs), "breadcrumbs" => $breadcrumbs, "usuario" => $dadosUsuario)); $view->showContents(); }
// verifica se precisa cadastrar o paciente $existe = function ($dao, $conexao, $nome) { return $dao->count($conexao, "pacientes", array('where' => array('nome' => $nome))) > 0; }; $mensagem = ''; if (!$existe($dao, $conexao->getConexao(), $dados['nomePaciente'])) { $timestamp = time(); $data = date('d/m/Y H:i:s', $timestamp); $dao->salva($conexao->getConexao(), "pacientes", array('id' => 0, 'nome' => $dados['nomePaciente'], 'telefoneResidencial' => $dados['telefoneResidencial'], 'telefoneCelular' => $dados['telefoneCelular'], 'observacoes' => 'Paciente cadastrado pela agenda.', "timestamp" => $timestamp, "data" => $data)); $mensagem = 'Paciente cadastrado. '; } $fisioterapeutasAtuais = $dao->findAll($conexao->getConexao(), "agenda_fisioterapeutas", array("where" => array("compromisso" => $dados["id"]))); foreach ($fisioterapeutasAtuais as $f) { $fisioterapeutasAtuaisIds[] = $f["fisioterapeuta"]; } $dados = retiraDoArray(array("fisioterapeutas"), $dados); list($dados["dia"], $dados["mes"], $dados["ano"]) = explode("/", $dados["data"]); if ($dados['id'] == 0) { $dados["timestampC"] = time(); $dados["dataC"] = date('d/m/Y H:i:s', $dados["timestampC"]); } $dados = $dao->salva($conexao->getConexao(), "agenda", $dados); $excluidos = array_diff($fisioterapeutasAtuaisIds, $fisioterapeutas); $incluidos = array_diff($fisioterapeutas, $fisioterapeutasAtuaisIds); foreach ($incluidos as $id) { $dao->salva($conexao->getConexao(), "agenda_fisioterapeutas", array("id" => 0, "fisioterapeuta" => $id, "compromisso" => $dados["id"])); } foreach ($excluidos as $id) { $dao->exclui($conexao->getConexao(), "agenda_fisioterapeutas", array("where" => array("compromisso" => $dados["id"], "fisioterapeuta" => $id))); } $mensagem .= 'Compromisso salvo com sucesso.' . $conexao->getConexao()->commit();
public function cadastrarAction() { try { $conexao = $this->conexao->getConexao(); $redirecionar = "?modulo=agenda"; $tipos = Agenda::getTipos(); $breadcrumbs = array(); $breadcrumbs[] = array("Agenda" => "?modulo=" . $_GET["modulo"], "Novo compromisso" => ""); $dados = inicializaDados(new Agenda()); $dados["marcador"] = 0; $dados["data"] = isset($_GET['data']) ? $_GET['data'] : date('d/m/Y'); $dados["hora"] = isset($_GET['hora']) ? $_GET['hora'] : ''; $dados["tipo"] = isset($_GET['tipo']) ? $_GET['tipo'] : '0'; $fisioterapeutas = $this->dao->findAll($conexao, "vw_usuarios", array("where" => array("permissao" => Permissao::PERMISSAO_FISIOTERAPEUTA), "order" => array("nome" => "asc"))); // recupera os pacientes para o autocomplete $pacientes = $this->dao->findAll($conexao, "pacientes"); $pacientesArr = array(); foreach ($pacientes as $paciente) { $pacientesArr[] = '"' . $paciente["nome"] . '"'; } if (count($_POST) > 0) { $redirecionar = NULL; $dados = $dadosIn = $_POST; $idsFisioterapeutas = array(); $dados["fisioterapeutas"] = $dadosIn["fisioterapeutas"] = isset($dadosIn["fisioterapeutas"]) ? $dadosIn["fisioterapeutas"] : array(); $obrigatorios = array("tipo" => array("tipo" => "select", "nome" => "Tipo"), "nomePaciente" => array("tipo" => "input", "nome" => "Paciente"), "data" => array("tipo" => "input", "nome" => "Data"), "hora" => array("tipo" => "input", "nome" => "Hora"), "fisioterapeutas" => array("tipo" => "array", "nome" => "Fisioterapeutas")); $mensagens = array(); $mensagem = validaPost($obrigatorios, $dadosIn); if (!empty($mensagem)) { $mensagens[] = $mensagem; } if (!empty($dadosIn["hora"]) && !validaHora($dadosIn["hora"])) { $mensagens[] = "Informe uma hora válida."; } foreach ($dadosIn["fisioterapeutas"] as $f) { list($nome, $id) = explode("-", $f); $idsFisioterapeutas[] = $id; $quantidadeCompromissos = $this->dao->count($conexao, "agenda", array("leftJoin" => array("agenda_fisioterapeutas" => "agenda_fisioterapeutas.compromisso = agenda.id"), "where" => array("agenda.data" => $dadosIn["data"], "agenda.hora" => $dadosIn["hora"], "agenda_fisioterapeutas.fisioterapeuta" => $id), "whereNot" => array("agenda.id" => $dadosIn["id"]))); if ($quantidadeCompromissos > 0) { $mensagens[] = "Já existe um compromisso para " . $nome . " nesta mesma data e horário"; } } if (count($mensagens) > 0) { throw new Exception(implode('<br />', $mensagens)); } if ($dadosIn["id"] == 0) { $dadosIn["timestampC"] = time(); $dadosIn["dataC"] = date('d/m/Y H:i:s', $dadosIn["timestampC"]); } $dadosIn = retiraDoArray(array("fisioterapeutas"), $dadosIn); list($dadosIn["dia"], $dadosIn["mes"], $dadosIn["ano"]) = explode("/", $dadosIn["data"]); $dadosIn = $this->dao->salva($conexao, "agenda", $dadosIn); foreach ($idsFisioterapeutas as $id) { $this->dao->salva($conexao, "agenda_fisioterapeutas", array("id" => 0, "compromisso" => $dadosIn["id"], "fisioterapeuta" => $id)); } $conexao->commit(); setMensagem("info", "Compromisso do dia " . desconverteData($dadosIn["data"]) . " às " . $dadosIn["hora"] . " cadastrado [" . $paciente["nome"] . "]"); Application::redirect("?modulo=agenda&acao=cadastrar"); exit; } } catch (Exception $e) { $conexao->rollback(); setMensagem("error", $e->getMessage()); if ($redirecionar != NULL) { Application::redirect($redirecionar); exit; } } $conexao->disconnect(); $view = new View($_GET["modulo"], "painel", "novo.phtml"); $view->setParams(array("title" => getTitulo($breadcrumbs), "breadcrumbs" => $breadcrumbs, "compromisso" => $dados, "pacientes" => implode(",", $pacientesArr), "fisioterapeutas" => $fisioterapeutas)); $view->showContents(); }