package br.com.doctors.controller.consultas; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.joda.time.LocalDate; import br.com.caelum.vraptor.Get; import br.com.caelum.vraptor.Path; import br.com.caelum.vraptor.Post; import br.com.caelum.vraptor.Put; import br.com.caelum.vraptor.Resource; import br.com.caelum.vraptor.Result; import br.com.caelum.vraptor.Validator; import br.com.caelum.vraptor.view.Results; import br.com.doctors.controller.agendamento.AgendamentosController; import br.com.doctors.converters.consulta.ConsultaConverter; import br.com.doctors.converters.consulta.ConsultaJSon; import br.com.doctors.dao.agendamento.AgendamentoDao; import br.com.doctors.dao.consultas.AtestadoDao; import br.com.doctors.dao.consultas.ConsultaDao; import br.com.doctors.dao.consultas.ExameDao; import br.com.doctors.dao.consultas.ReceitaDao; import br.com.doctors.modelo.agendamento.Agendamento; import br.com.doctors.modelo.consultas.Atestado; import br.com.doctors.modelo.consultas.Consulta; import br.com.doctors.modelo.consultas.Exame; import br.com.doctors.modelo.consultas.Receita; import br.com.doctors.modelo.util.ParametrosAgendamento; import br.com.doctors.util.json.JQGridJSONConverter; /** * * @author Jonathan, Guilherme * */ @Resource public class ConsultasController { private ConsultaDao daoConsulta; private Result result; private Validator validator; private AgendamentoDao daoAgendamento; private ExameDao daoExame; private ParametrosAgendamento parametros; private AtestadoDao daoAtestado; private ReceitaDao daoReceita; public ConsultasController(ConsultaDao daoConsulta, AgendamentoDao daoAgendamento, Result result, Validator validator, ExameDao daoExame, AtestadoDao daoAtestado, ReceitaDao daoReceita) { this.daoConsulta = daoConsulta; this.daoAgendamento = daoAgendamento; this.result = result; this.validator = validator; this.daoExame = daoExame; this.daoAtestado = daoAtestado; this.daoReceita = daoReceita; this.parametros = ParametrosAgendamento.getParametrosDefault(); } @Get @Path({ "/consultas" }) public void list() { result.include("consultas", daoConsulta.listaTudo()); } @Get @Path("/consultas/novo/{idAgendamento}") public void cadastro(Long idAgendamento) { result.include("agendamento", daoAgendamento.carrega(idAgendamento)); result.include("consultas", daoConsulta.listaTudo()); } @Post @Path("/consultas") public void adiciona(final Consulta consulta, Collection<String> exames) { System.out.println(consulta.getAgendamento()); System.out.println("======================================"); // System.out.println("Consulta:" + consulta); List<Exame> examesList = new ArrayList<Exame>(); for (String descricao : exames) { System.out.println(descricao); Exame exame = new Exame(descricao); exame.setConsulta(consulta); daoExame.adiciona(exame); examesList.add(exame); } // consulta.setExames(examesList); // validator.checking(new Validations(){{ // that(consulta.getNome() != null && consulta.getNome().length() >= 3, // "paciente.nome", "nome.obrigatorio"); // // // mais valida��es // }}); // validator.onErrorUsePageOf(this).cadastro(); daoConsulta.adiciona(consulta); result.redirectTo(ConsultasController.class).list(); } public ConsultaDao getDaoConsulta() { return daoConsulta; } public void setDaoConsulta(ConsultaDao daoConsulta) { this.daoConsulta = daoConsulta; } public Result getResult() { return result; } public void setResult(Result result) { this.result = result; } public Validator getValidator() { return validator; } public void setValidator(Validator validator) { this.validator = validator; } @Get @Path("/consultas/{id}") public Consulta edit(Long id) { return daoConsulta.carrega(id); } @Put @Path("/consultas/{consulta.id}") public void alterar(final Consulta consulta) { // validator.checking(new Validations(){{ // that(consulta.getNome() != null && consulta.getNome().length() >= 3, // "paciente.nome", "nome.obrigatorio"); // // // mais valida��es // }}); // validator.onErrorUsePageOf(this).edit(consulta.getId()); daoConsulta.atualiza(consulta); result.redirectTo(ConsultasController.class).list(); } @Path("/consultas/remover/{id}") public void remover(Long id) { Consulta consulta = daoConsulta.carrega(id); daoConsulta.remove(consulta); result.redirectTo(ConsultasController.class).list(); } @Post @Path("/consultas/efetuarConsulta") public void efetuarConsultar(Consulta consulta) { Agendamento agendamento = daoAgendamento.carrega(consulta .getAgendamento().getId()); agendamento.setConsulta(consulta); // atualizar status do agendamento tbm daoAgendamento.atualiza(agendamento); System.out.println(consulta); daoConsulta.adiciona(consulta); // tempor�rio if (consulta.getExames() != null) { for (Exame exame : consulta.getExames()) { exame.setConsulta(consulta); daoExame.adiciona(exame); } } if (consulta.getAtestados() != null) { for (Atestado atestado : consulta.getAtestados()) { atestado.setConsulta(consulta); daoAtestado.adiciona(atestado); } } if (consulta.getReceitas() != null) { for (Receita receita : consulta.getReceitas()) { receita.setConsulta(consulta); daoReceita.adiciona(receita); } } result.redirectTo(AgendamentosController.class).list(); } @Post @Path("/consulta/consultarHistorico") public void consultarHistorico(Long idPaciente, Long idMedico, LocalDate dataInicial, LocalDate dataFinal) { System.out.printf( "idPaciente: %d, idMedico: %d, inicial:%s, final:%s\n", idPaciente, idMedico, dataInicial, dataFinal); ConsultaConverter consultaConverter = new ConsultaConverter( daoAgendamento, parametros); List<ConsultaJSon> consultasJSon = consultaConverter.buscarHistorico( idMedico, idPaciente, dataInicial, dataFinal); System.out.println(consultasJSon); JQGridJSONConverter jqgrid = new JQGridJSONConverter(); jqgrid.addJSONObjects(consultasJSon); result.use(Results.json()).withoutRoot().from(jqgrid).include("rows") .include("rows.cells").serialize(); } public void consulta() { } }