Boa tarde pessoal.
Basicamente tenho uma aplicado jsf de agendamento odontológico, onde após o usuário fizer login no sistema, ele poderá agendar uma consulta por meio de uma pesquisa por especialidade, ao retornar os dados da pesquisa, será apresentado em um dataTable, onde também tem um botão agendar, o paciente clica em agendar e é chamado um método de inserção, até aí os dados da tabela são adicionados, porém só os dados da consulta, eu preciso que quando ele clicar em agendar, o método salve tanto os dados da consulta, quanto os dados do paciente que até então está em um sessionScoped, porém os dados do paciente estão em um bean, e o método de inserção da agenda está em outro bean.
OS DADOS DA BEAN PACIENTE ONDE AUTENTICO E FAÇO UMA PESQUISA PARA TRAZER OS DADOS DO PACIENTE PARA A TELA.
public List<EntidadePaciente> loginPaciente() {
//=============== Autenticar Paciente por email e senha
String emailBuscado = "";
String senhaBuscado = "";
paciente.setEmail(email);
paciente.setSenha(senha);
try {
PacienteDAO dao = new PacienteDAO();
List<EntidadePaciente> lista = dao.autenticarPaciente(email, senha);
for (EntidadePaciente pac : lista) {
emailBuscado = pac.getEmail();
senhaBuscado = pac.getSenha();
}
if (paciente.getEmail().equals(emailBuscado) && paciente.getSenha().equals(senhaBuscado)) {
//====== Pesquisar Paciente pelo e-mail
paciente.setEmail(email);
PacienteDAO daoPaciente = new PacienteDAO();
itensPaciente = daoPaciente.pesquisarPaciente(email);
for (EntidadePaciente p : itensPaciente) {
nome = p.getNome();
emailP = p.getEmail();
sexo = p.getSexo();
dataNascimento = p.getDataNascimento();
cpf = p.getCpf();
telefoneFixo = p.getTelefoneFixo();
telefoneCelular = p.getTelefoneCelular();
senhaP = p.getSenha();
}
//====== Pesquisar consultas marcadas pelo paciente pelo e-mail
consultasAgendadas.setEmail(email);
ConsultasAgendadasDAO consDAO = new ConsultasAgendadasDAO();
itensConsultas = consDAO.pesquisarConsultasPaciente(email);
FacesContext.getCurrentInstance().getExternalContext().redirect("TelaPessoalPaciente.xhtml");
} else {
MensagensUTIL.adicionarMensagemErro("Paciente não encontrado!");
}
} catch (SQLException ex) {
Logger.getLogger(ManterPacienteBean.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ManterPacienteBean.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
Até ai consigo obter os dados numa boa por que está no mesmo bean.
Não entendo muito sobre sessões, já vi vários posts na net, mas não consegui entender direito como posso pegar os dados da sessão e inserir em uma variável para ser adicionada junto com os dados da agenda.
SEGUE MÉTODO DE INSERÇÃO DE AGENDA.
public void teste(){
try {
especialidadeTeste =agendaConsultas.getEspecialidade();
dataTeste = agendaConsultas.getData();
horarioTeste = agendaConsultas.getHorario();
dentistaTeste = agendaConsultas.getNomeDentista();
pacienteTeste ="";
entiTeste.setEspecialidade(especialidadeTeste);
entiTeste.setData(dataTeste);
entiTeste.setHorario(horarioTeste);
entiTeste.setDentista(dentistaTeste);
entiTeste.setPaciente(pacienteTeste);
ConsultasAgendadasDAO dao = new ConsultasAgendadasDAO();
dao.salvarTeste(entiTeste);
FacesContext.getCurrentInstance().getExternalContext().redirect("PagTeste.xhtml");
} catch (IOException | SQLException ex) {
Logger.getLogger(ManterConsultasAgendadasBean.class.getName()).log(Level.SEVERE, null, ex);
}
}
Esse método é apenas de teste para verificar se realmente salva os dados quando clico em agenda e está funcionando, porém como faço para colocar os dados do paciente em variáveis como os da agenda para poder salvar no banco tudo junto?
As Beans já estão como sessionScoped e todos os atributos e objetos estão com seus respectivos gets e sets.
Detalhe, a maioria vejo falando que é só jogar o usuário na sessão desta forma:
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(“usuario”, objeto_usuario);
e para recuperar é só fazer isso:
usuario = (Usuario)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(“usuario”);
Porém não entendo como posso pegar os dados do paciente separadamente e coloca-los nas variáveis para serem adicionados.