package br.com.doctors.controller.administracao; 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.doctors.dao.administracao.FuncionarioDao; import br.com.doctors.dao.administracao.PerfilUsuarioDao; import br.com.doctors.modelo.administracao.Funcionario; /** * * @author Jonathan/Guilherme * */ @Resource public class FuncionariosController { private Result result; private Validator validator; private FuncionarioDao daoFuncionario; private PerfilUsuarioDao daoPerfil; public FuncionariosController(FuncionarioDao daoFuncionario, PerfilUsuarioDao daoPerfil, Result result, Validator validator) { this.daoFuncionario = daoFuncionario; this.daoPerfil = daoPerfil; this.result = result; this.validator = validator; } @Get @Path({"/funcionarios"}) public void list() { result.include("funcionarios", daoFuncionario.listaTudo()); } @Get @Path("/funcionarios/novo") public void cadastro() { } @Post @Path("/funcionarios") public void adiciona(final Funcionario funcionario){ System.out.println("-======================================"); System.out.println("Funcionario:" + funcionario ); validator.checking(getCadastroValidations(funcionario)); validator.onErrorUsePageOf(this).cadastro(); daoPerfil.adiciona(funcionario.getPerfil()); daoFuncionario.adiciona(funcionario); result.redirectTo(FuncionariosController.class).list(); } private Validations getCadastroValidations(final Funcionario funcionario) { return new Validations(){{ that(funcionario.getNome() != null && funcionario.getNome().length() >= 3, "funcionario.nome", "nome.obrigatorio"); that(funcionario.getMatricula() != null, "funcionario.matricula", "campo.obrigatorio", "n�mero de matr�cula"); that(!Strings.isNullOrEmpty(funcionario.getDataAdmissao()), "funcionario.dataAdmissao", "campo.obrigatorio", "data de admiss�o"); that(!Strings.isNullOrEmpty(funcionario.getPerfil().getLogin() ), "funcionario.perfil.login", "campo.obrigatorio", "Login"); that(!Strings.isNullOrEmpty(funcionario.getPerfil().getSenha()), "funcionario.perfil.senha", "campo.obrigatorio", "Senha"); that(!daoPerfil.loginJaExiste(funcionario.getPerfil().getLogin()), "funcionario.perfil.login", "login.ja.existe", funcionario.getPerfil().getLogin()); }}; } @Get @Path("/funcionarios/{id}") public Funcionario edit(Long id){ return daoFuncionario.carrega(id); } @Put @Path("/funcionarios/{funcionario.id}") public void alterar(final Funcionario funcionario){ System.out.println("-======================================"); System.out.println("Funcionario:" + funcionario.getPerfil() ); validator.checking(getEdicaoValidations(funcionario)); validator.onErrorUsePageOf(this).edit(funcionario.getId()); funcionario.setPerfil(daoPerfil.carrega(funcionario.getPerfil().getId())); daoFuncionario.atualiza(funcionario); result.redirectTo(FuncionariosController.class).list(); } private Validations getEdicaoValidations(final Funcionario funcionario) { return new Validations(){{ that(funcionario.getNome() != null && funcionario.getNome().length() >= 3, "funcionario.nome", "nome.obrigatorio"); that(funcionario.getMatricula() != null, "funcionario.matricula", "campo.obrigatorio", "n�mero de matr�cula"); that(!Strings.isNullOrEmpty(funcionario.getDataAdmissao()), "funcionario.dataAdmissao", "campo.obrigatorio", "data de admiss�o"); }}; } @Path("/funcionarios/remover/{id}") public void remover(Long id){ Funcionario funcionario = daoFuncionario.carrega(id); daoFuncionario.remove(funcionario); result.redirectTo(FuncionariosController.class).list(); } }