Пример #1
0
        public void CadastrarAtendenteComCpfSemMascaraTest()
        {
            // given
            var usuarioCadastro   = new UsuarioCadastroViewModel("*****@*****.**", "25d55ad283aa400af464c76d713c07ad", "Atendente");
            var enderecoCadastro  = new EnderecoViewModel("29500-000", "Rua nova", "123", "Casa", "Centro", "Alegre", "ES");
            var atendenteCadastro = new AtendenteCadastroViewModel("Joana", new DateTime(1980, 2, 5), "F", "12245778912", "12.345.678-1", "*****@*****.**", "(34)98543-3241", enderecoCadastro, usuarioCadastro);

            var endereco         = new Endereco(new Guid("1EF2F5CB-A04B-4761-3C44-08D78CC135ED"), "29500-000", "Rua nova", "123", "Casa", "Centro", "Alegre", "ES");
            var atendente        = new Atendente(new Guid("16E16A8D-469F-4286-A470-08D78CC0F920"), "Joana", new DateTime(1980, 2, 5), "F", "12245778912", "12.345.678-1", "*****@*****.**", "(34)98543-3241", endereco.IdEndereco);
            var usuarioAtendente = new Usuario(new Guid("1A7C25A0-896F-49DF-A75E-EE7DD53AECB9"), "*****@*****.**", "25d55ad283aa400af464c76d713c07ad", "Atendente", null, atendente);

            this.atendenteRepositoryMock.SetupSequence(a => a.BuscarAtendentePorCpf("122.457.789-12")).Returns((Atendente)null).Returns(atendente);
            this.atendenteRepositoryMock.Setup(a => a.BuscarAtendentePorRg(atendenteCadastro.Rg)).Returns((Atendente)null);
            this.usuarioRepositoryMock.Setup(u => u.ObterUsuarioPorEmail(atendenteCadastro.Usuario.Email)).Returns((Usuario)null);
            this.enderecoRepositoryMock.Setup(e => e.BuscaIdEndereco(It.IsAny <Endereco>())).Returns(Guid.NewGuid());
            this.enderecoRepositoryMock.Setup(e => e.CadastrarEndereco(It.IsAny <Endereco>())).Returns(true);
            this.atendenteRepositoryMock.Setup(a => a.CadastrarAtendente(It.IsAny <Atendente>())).Returns(true);
            this.usuarioRepositoryMock.Setup(u => u.CadastrarUsuario(It.IsAny <Usuario>())).Returns(true);

            var atendenteService = new AtendenteService(this.atendenteRepositoryMock.Object, this.enderecoRepositoryMock.Object, this.usuarioRepositoryMock.Object);

            // when
            var resultado = atendenteService.CadastrarAtendente(atendenteCadastro);

            // then
            Assert.NotNull(resultado);
            Assert.True(resultado.Id == 1);
        }
 public Mensagem CadastrarAtendente(AtendenteCadastroViewModel atendenteCadastroViewModel)
 {
     return(this.atendenteService.CadastrarAtendente(atendenteCadastroViewModel));
 }
        public Mensagem CadastrarAtendente(AtendenteCadastroViewModel atendenteCadastroViewModel)
        {
            if (!Regex.IsMatch(atendenteCadastroViewModel.Cpf, cpfComMascara))
            {
                if (Regex.IsMatch(atendenteCadastroViewModel.Cpf, cpfSemMascara))
                {
                    atendenteCadastroViewModel.Cpf = atendenteCadastroViewModel.Cpf.Substring(0, 3) + "." + atendenteCadastroViewModel.Cpf.Substring(3, 3) + "." + atendenteCadastroViewModel.Cpf.Substring(6, 3) + "-" + atendenteCadastroViewModel.Cpf.Substring(9, 2);
                }
                else
                {
                    return(new Mensagem(0, "CPF não possui o formato correto!"));
                }
            }

            if (!Regex.IsMatch(atendenteCadastroViewModel.Rg, rgComMascara))
            {
                if (Regex.IsMatch(atendenteCadastroViewModel.Rg, rgSemMascara))
                {
                    atendenteCadastroViewModel.Rg = atendenteCadastroViewModel.Rg.Substring(0, 2) + "." + atendenteCadastroViewModel.Rg.Substring(2, 3) + "." + atendenteCadastroViewModel.Rg.Substring(5, 3) + "-" + atendenteCadastroViewModel.Rg.Substring(8);
                }
                else
                {
                    return(new Mensagem(0, "RG não possui o formato correto!"));
                }
            }

            if (!Regex.IsMatch(atendenteCadastroViewModel.Telefone, celularComMascara))
            {
                if (Regex.IsMatch(atendenteCadastroViewModel.Telefone, celularSemMascara))
                {
                    atendenteCadastroViewModel.Telefone = "(" + atendenteCadastroViewModel.Telefone.Substring(0, 2) + ")" + atendenteCadastroViewModel.Telefone.Substring(2, 5) + "-" + atendenteCadastroViewModel.Telefone.Substring(7);
                }
                else
                {
                    return(new Mensagem(0, "Telefone não possui o formato correto!"));
                }
            }

            if (!Regex.IsMatch(atendenteCadastroViewModel.Endereco.Cep, cepComMascara))
            {
                if (Regex.IsMatch(atendenteCadastroViewModel.Endereco.Cep, cepSemMascara))
                {
                    atendenteCadastroViewModel.Endereco.Cep = atendenteCadastroViewModel.Endereco.Cep.Substring(0, 5) + "-" + atendenteCadastroViewModel.Endereco.Cep.Substring(5);
                }
                else
                {
                    return(new Mensagem(0, "CEP não possui o formato correto!"));
                }
            }

            if (this.atendenteRepository.BuscarAtendentePorCpf(atendenteCadastroViewModel.Cpf) != null)
            {
                return(new Mensagem(0, "Já existe uma atendente com esse CPF registrado!"));
            }

            if (this.atendenteRepository.BuscarAtendentePorRg(atendenteCadastroViewModel.Rg) != null)
            {
                return(new Mensagem(0, "Já existe uma atendente com esse RG registrado!"));
            }

            if (this.usuarioRepository.ObterUsuarioPorEmail(atendenteCadastroViewModel.Usuario.Email) != null)
            {
                return(new Mensagem(0, "Já existe um usuário cadastrado com esse e-mail!"));
            }

            bool     resultado = true;
            Endereco endereco  = new Endereco(atendenteCadastroViewModel.Endereco.Cep, atendenteCadastroViewModel.Endereco.Logradouro, atendenteCadastroViewModel.Endereco.Numero, atendenteCadastroViewModel.Endereco.Complemento, atendenteCadastroViewModel.Endereco.Bairro, atendenteCadastroViewModel.Endereco.Localidade, atendenteCadastroViewModel.Endereco.Uf);
            Guid     id        = this.enderecoRepository.BuscaIdEndereco(endereco);

            if (id == Guid.Empty)
            {
                resultado = this.enderecoRepository.CadastrarEndereco(endereco);
                id        = this.enderecoRepository.BuscaIdEndereco(endereco);
            }

            if (!resultado)
            {
                return(new Mensagem(0, "Falha ao cadastrar atendente!"));
            }

            Atendente atendente = new Atendente(atendenteCadastroViewModel.Nome, atendenteCadastroViewModel.DataNascimento, atendenteCadastroViewModel.Sexo, atendenteCadastroViewModel.Cpf, atendenteCadastroViewModel.Rg, atendenteCadastroViewModel.Email, atendenteCadastroViewModel.Telefone, id);

            resultado = this.atendenteRepository.CadastrarAtendente(atendente);

            if (!resultado)
            {
                return(new Mensagem(0, "Falha ao cadastrar atendente!"));
            }

            Atendente atendenteResultado = this.atendenteRepository.BuscarAtendentePorCpf(atendenteCadastroViewModel.Cpf);

            if (atendenteResultado == null)
            {
                return(new Mensagem(0, "Falha ao cadastrar atendente!"));
            }

            using (SHA256 sha256 = SHA256.Create())
            {
                byte[]        data     = sha256.ComputeHash(Encoding.UTF8.GetBytes(atendenteCadastroViewModel.Usuario.Senha));
                StringBuilder sBuilder = new StringBuilder();
                for (int i = 0; i < data.Length; i++)
                {
                    sBuilder.Append(data[i].ToString("x2"));
                }
                atendenteCadastroViewModel.Usuario.Senha = sBuilder.ToString();
            }

            Usuario usuario = new Usuario(atendenteCadastroViewModel.Usuario.Email, atendenteCadastroViewModel.Usuario.Senha, "Atendente", null, atendenteResultado.IdAtendente);

            resultado = this.usuarioRepository.CadastrarUsuario(usuario);

            if (!resultado)
            {
                return(new Mensagem(0, "Falha ao cadastrar atendente!"));
            }

            return(new Mensagem(1, "Atendente cadastrada com sucesso!"));
        }