public function cadastrarAction() { try { $conexao = $this->conexao->getConexao(); $redirecionar = "?modulo=pacientes"; $breadcrumbs = array(); $breadcrumbs[] = array("Pacientes" => "?modulo=" . $_GET["modulo"]); $dados = inicializaDados(new Paciente()); if (isset($_GET["id"])) { $dados = $this->dao->findByPk($conexao, "pacientes", (int) $_GET["id"]); $breadcrumbs[] = array("Atualizar" => ""); $acao = "editar"; } else { $breadcrumbs[] = array("Cadastrar" => ""); $acao = "novo"; } if (count($_POST) > 0) { $redirecionar = NULL; $dados = $_POST["Paciente"]; $dados["tratamentos"] = isset($dados["tratamentos"]) ? implode(",", $dados["tratamentos"]) : NULL; $obrigatorios = array("nome" => array("tipo" => "input", "nome" => "Nome")); $mensagem = validaPost($obrigatorios, $dados); if (!empty($mensagem)) { throw new Exception($mensagem); } if (Funcoes::jaExiste($conexao, $this->dao, $dados, "pacientes", "nome")) { throw new Exception('Já existe um paciente com esse nome'); } if ($dados["id"] == 0) { $dados["timestamp"] = time(); $dados["data"] = date('d/m/Y H:i:s', $dados["timestamp"]); } $dados = $this->dao->salva($conexao, "pacientes", $dados); if ($acao == "novo") { setMensagem("info", "Paciente cadastrado [" . $dados["nome"] . "]"); } else { $conexao->query()->from("agenda")->where("paciente = ?", (int) $dados["id"])->save(array('nomePaciente' => $dados["nome"])); setMensagem("info", "Paciente atualizado [" . $dados["nome"] . "]"); } $redirecionar = "?modulo=pacientes&acao=cadastrar&id=" . $dados["id"]; if (isset($_GET["r"])) { $redirecionar = urldecode($_GET["r"]); } $conexao->commit(); $conexao->disconnect(); Application::redirect($redirecionar); 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, "paciente" => $dados)); $view->showContents(); }