package br.com.doctors.controller.consultas; 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.validator.Validations; import br.com.doctors.dao.consultas.ExameDao; import br.com.doctors.modelo.consultas.Exame; /** * * @author Jonathan/Guilherme * */ @Resource public class ExamesController { private ExameDao dao; private Result result; private Validator validator; public ExamesController(ExameDao dao, Result result, Validator validator) { this.dao = dao; this.result = result; this.validator = validator; } @Get @Path({"/exames"}) public void list() { result.include("exames", dao.listaTudo()); } @Get @Path("/exames/novo") public void cadastro() {} @Post @Path("/exames") public void adiciona(final Exame exame){ validator.checking(new Validations(){{ that(exame.getDescricao() != null && exame.getDescricao().length() >= 3, "exame.nome", "descricao.obrigatorio"); }}); validator.onErrorUsePageOf(this).cadastro(); dao.adiciona(exame); result.redirectTo(ExamesController.class).list(); } @Get @Path("/exames/{id}") public Exame edit(Long id){ return dao.carrega(id); } @Put @Path("/exames/{exame.id}") public void alterar(final Exame exame){ validator.checking(new Validations(){{ that(exame.getDescricao() != null && exame.getDescricao().length() >= 3, "exame.nome", "descricao.obrigatorio"); }}); validator.onErrorUsePageOf(this).edit(exame.getId()); dao.atualiza(exame); result.redirectTo(ExamesController.class).list(); } @Path("/exames/remover/{id}") public void remover(Long id){ Exame exame = dao.carrega(id); dao.remove(exame); result.redirectTo(ExamesController.class).list(); } }