package br.com.doctors.controller.administracao; import javax.annotation.security.RolesAllowed; import com.google.common.base.Strings; 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.caelum.vraptor.view.Results; import br.com.doctors.dao.administracao.ConvenioDao; import br.com.doctors.dao.administracao.MedicoDao; import br.com.doctors.dao.administracao.MedicoDao; import br.com.doctors.dao.administracao.PerfilUsuarioDao; import br.com.doctors.modelo.administracao.Medico; /*** * * @author Bruno * */ @Resource public class MedicosController { private Result result; private Validator validator; private MedicoDao daoMedico; private PerfilUsuarioDao daoPerfil; public MedicosController(MedicoDao daoMedico, Result result, PerfilUsuarioDao daoPerfilUsuario, Validator validator) { this.daoMedico = daoMedico; this.result = result; this.validator = validator; this.daoPerfil = daoPerfilUsuario; } @Get @Path({"/medicos"}) public void list() { result.include("medicos", daoMedico.listaTudo()); } @Get @Path("/medicos/novo") public void cadastro() { } @Post @Path("/medicos") public void adiciona(final Medico medico){ // System.out.println("-======================================"); // System.out.println("Medico:" + medico + medico.getUfRegistro()); validator.checking(getCadastroValidations(medico)); validator.onErrorUsePageOf(this).cadastro(); daoPerfil.adiciona(medico.getPerfil()); daoMedico.adiciona(medico); result.redirectTo(MedicosController.class).list(); } private Validations getCadastroValidations(final Medico medico) { return new Validations(){{ that(medico.getNome() != null && medico.getNome().length() >= 3, "medico.nome", "nome.obrigatorio"); that(medico.getCrm() != null, "medico.crm", "campo.obrigatorio", "CRM"); that(!Strings.isNullOrEmpty(medico.getUfRegistro()), "medico.ufRegistro", "campo.obrigatorio", "relacionado ao UF de registro do m�dico"); that(!Strings.isNullOrEmpty(medico.getEspecialidade()), "medico.especialidade", "campo.obrigatorio", "Especialidade"); that(!Strings.isNullOrEmpty(medico.getPerfil().getLogin() ), "medico.perfil.login", "campo.obrigatorio", "Login"); that(!Strings.isNullOrEmpty(medico.getPerfil().getSenha()), "medico.perfil.senha", "campo.obrigatorio", "Senha"); that(!daoPerfil.loginJaExiste(medico.getPerfil().getLogin()), "medico.perfil.login", "login.ja.existe", medico.getPerfil().getLogin()); }}; } @Get @Path("/medicos/{id}") public Medico edit(Long id){ return daoMedico.carrega(id); } @Put @Path("/medicos/{medico.id}") public void alterar(final Medico medico){ validator.checking(getEdicaoValidations(medico)); validator.onErrorUsePageOf(this).edit(medico.getId()); medico.setPerfil(daoPerfil.carrega(medico.getPerfil().getId())); daoMedico.atualiza(medico); result.redirectTo(MedicosController.class).list(); } private Validations getEdicaoValidations(final Medico medico) { return new Validations(){{ that(medico.getNome() != null && medico.getNome().length() >= 3, "medico.nome", "nome.obrigatorio"); that(medico.getCrm() != null, "medico.crm", "campo.obrigatorio", "CRM"); that(!Strings.isNullOrEmpty(medico.getUfRegistro()), "medico.ufRegistro", "campo.obrigatorio", "relacionado ao UF de registro do m�dico"); that(!Strings.isNullOrEmpty(medico.getEspecialidade()), "medico.especialidade", "campo.obrigatorio", "Especialidade"); }}; } @Path("/medicos/remover/{id}") public void remover(Long id){ Medico medico = daoMedico.carrega(id); daoMedico.remove(medico); result.redirectTo(MedicosController.class).list(); } @Get @Path({"/medicos/carregar.json"}) public void carregaTodosJSon(){ // result.include("medicos", daoMedico.listaTudo()); result.use(Results.json()).from(daoMedico.listaTudo(),"medicos"); } }