예제 #1
0
        void SalvarUsuario(Usuario usuario)
        {
            // Validando
            var validator = EntityValidatorFactory.CreateValidator();

            if (!validator.IsValid(usuario))
            {
                throw new ApplicationValidationErrorsException(validator.GetInvalidMessages <Usuario>(usuario));
            }

            var specExisteUsuario = UsuarioSpecifications.ConsultaEmail(usuario.NomeUsuario);

            if (_usuarioRepository.AllMatching(specExisteUsuario).Any())
            {
                throw new ApplicationValidationErrorsException("Já existe um usuário cadastrado com este e-mail.");
            }

            _usuarioRepository.Add(usuario);
            _usuarioRepository.Commit();
        }
예제 #2
0
        void AlterarUsuario(Usuario persistido, Usuario corrente)
        {
            // Recupera a validação
            var validator = EntityValidatorFactory.CreateValidator();

            if (!validator.IsValid(corrente))
            {
                throw new ApplicationValidationErrorsException(validator.GetInvalidMessages <Usuario>(corrente));
            }

            var specExisteUsuario = UsuarioSpecifications.ConsultaEmail(corrente.NomeUsuario);

            if (_usuarioRepository.AllMatching(specExisteUsuario).Where(c => c.Id != persistido.Id).Any())
            {
                throw new ApplicationValidationErrorsException("Já existe um usuário cadastrado com este e-mail.");
            }

            _usuarioRepository.Merge(persistido, corrente);
            _usuarioRepository.Commit();
        }
예제 #3
0
        public void AutenticarUsuario(string email, string senha)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(email))
                {
                    throw new ApplicationValidationErrorsException("Digite o email.");
                }

                if (string.IsNullOrWhiteSpace(senha))
                {
                    throw new ApplicationValidationErrorsException("Digite a senha.");
                }

                var spec    = UsuarioSpecifications.ConsultaEmail(email);
                var usuario = _usuarioRepository.AllMatching(spec).SingleOrDefault();
                if (usuario == null)
                {
                    throw new ApplicationValidationErrorsException("Usuário não encontrado.");
                }

                if (usuario.Senha != senha)
                {
                    throw new ApplicationValidationErrorsException("Senha inválida.");
                }

                var adapter    = TypeAdapterFactory.CreateAdapter();
                var usuarioDTO = adapter.Adapt <Usuario, UsuarioDTO>(usuario);

                ControladorDeSessao.Autenticar(usuarioDTO);
            }
            catch (ApplicationValidationErrorsException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                LoggerFactory.CreateLog().LogError(ex);
                throw new Exception("O servidor não respondeu.");
            }
        }