package br.com.doctors.controller.util; import java.util.List; import br.com.caelum.vraptor.*; import br.com.caelum.vraptor.view.Results; import br.com.doctors.converters.agendamento.HorarioConverter; import br.com.doctors.converters.notificacao.NotificacaoConverter; import br.com.doctors.converters.notificacao.NotificacaoJSon; import br.com.doctors.dao.administracao.FuncionarioDao; import br.com.doctors.dao.administracao.MedicoDao; import br.com.doctors.dao.administracao.PerfilUsuarioDao; import br.com.doctors.dao.agendamento.AgendamentoDao; import br.com.doctors.dao.util.NotificacaoDao; import br.com.doctors.modelo.administracao.Funcionario; import br.com.doctors.modelo.administracao.Medico; import br.com.doctors.modelo.administracao.PerfilUsuario; import br.com.doctors.modelo.agendamento.Agendamento; import br.com.doctors.modelo.util.Notificacao; import br.com.doctors.modelo.util.ParametrosAgendamento; import br.com.doctors.util.UserSession; import br.com.doctors.util.json.JQGridJSONConverter; @Resource public class NotificacoesController { private Result result; private UserSession userSession; private NotificacaoDao daoNotificacao; private MedicoDao daoMedico; private AgendamentoDao daoAgendamento; private FuncionarioDao daoFuncionario; private NotificacaoConverter notificacaoConverter; public NotificacoesController(Result result, MedicoDao daoMedico, NotificacaoDao daoNotificacao, UserSession userSession, AgendamentoDao daoAgendamento, FuncionarioDao daoFuncionario) { this.result = result; this.daoNotificacao = daoNotificacao; this.userSession = userSession; this.daoMedico = daoMedico; this.daoFuncionario = daoFuncionario; this.daoAgendamento = daoAgendamento; ParametrosAgendamento parametros = ParametrosAgendamento.getParametrosDefault(); notificacaoConverter = new NotificacaoConverter(parametros, daoNotificacao); } @Post @Path("/notificacoes/notifica") public void notificarMedico(Long idAgendamento){ Notificacao notificacao = new Notificacao(); Agendamento agendamento = daoAgendamento.carrega(idAgendamento); notificacao.setAgendamento(agendamento); Funcionario funcionario = getFuncionarioLogado(); notificacao.setFuncionario(funcionario); daoNotificacao.adiciona(notificacao); result.use(Results.status()).accepted(); } public Funcionario getFuncionarioLogado() { return daoFuncionario.buscaPorPerfil(userSession.getUsuario()); } @Get @Path("/notificacoes/verifica") public void buscaNotificacoes(){ List<NotificacaoJSon> notificacoesJSon = notificacaoConverter.buscaNotificacoesPara(getIdMedicoLogado()); // JQGridJSONConverter jqgrid = new JQGridJSONConverter(); // jqgrid.addJSONObjects(notificacoesJson); // result.use(Results.json()).withoutRoot().from(jqgrid).include("rows").include("rows.cells").serialize(); result.use(Results.json()).from(notificacoesJSon, "notificacoes").serialize(); } private Long getIdMedicoLogado(){ Medico medicoLogado = daoMedico.buscaPorPerfil(userSession.getUsuario().getId()); return medicoLogado.getId(); } }