public async Task <bool> ResetarSenha(NovaSenhaUsuario novaSenhaUsuario)
        {
            var usuario = await _usuarioRepository.ObterUsuarioPorId(novaSenhaUsuario.Id);

            if (usuario == null)
            {
                Notificar("Usuario inválido");
                return(false);
            }

            var codigoConfirmacao = await _usuarioRepository.ObterConfirmacaoUsuario(usuario.Id);

            if (codigoConfirmacao == null)
            {
                Notificar("Código de confirmação inválido");
                return(false);
            }

            if (!codigoConfirmacao.CodigoValido() || codigoConfirmacao.Codigo != novaSenhaUsuario.Codigo)
            {
                await AplicarValidacao(codigoConfirmacao);

                return(false);
            }

            AtualizarInformacoesUsuario(usuario, codigoConfirmacao);

            var hash = _bcrypt.GetHashPassword(novaSenhaUsuario.Senha);

            usuario.AdicionarHashSenha(hash);

            await _usuarioRepository.Commit();

            return(true);
        }
Exemple #2
0
        public async Task <bool> Contratar(Funcionario funcionario)
        {
            if (!funcionario.EhValido())
            {
                Notificar(funcionario.ValidationResult);
                return(false);
            }

            var cargo = await _funcionarioRepository.ObterCargoPorId(funcionario.CargoId);

            if (cargo == null)
            {
                Notificar("Cargo informado inválido");
                return(false);
            }

            if (await FuncionarioContratado(funcionario))
            {
                Notificar($"{funcionario.Nome} já faz parte do quadro de funcionários");
                return(false);
            }

            var senhaAutomatica = funcionario.Usuario.Senha;

            var hash = _passwordHash.GetHashPassword(senhaAutomatica);

            funcionario.Usuario.AdicionarHashSenha(hash);

            if (await _funcionarioRepository.Contratar(funcionario))
            {
                await _mediatorHandler.PublicarEvento(
                    new NovoFuncionarioEvent(funcionario.Email.Endereco, funcionario.Nome, senhaAutomatica));

                return(true);
            }

            Notificar("Erro ao contratar novo funcionário");

            return(false);
        }
        public async Task <bool> Matricular(Cliente cliente, Guid planoId)
        {
            if (!cliente.EhValido())
            {
                Notificar(cliente.ValidationResult);

                return(false);
            }

            if (await ClienteMatriculado(cliente))
            {
                Notificar("Cliente já matriculado !");
                return(false);
            }

            var planoDesconto = await _planoRepository.ObterDescontoPlano(planoId);

            if (planoDesconto == null)
            {
                Notificar("Plano sem desconto associado");
                return(false);
            }

            cliente.AdicionarContrato(new Contrato(planoDesconto));

            var hash = _passwordHash.GetHashPassword(cliente.Usuario.Senha);

            cliente.Usuario.AdicionarHashSenha(hash);

            if (await _clienteRepository.Adicionar(cliente))
            {
                await _mediator.PublicarEvento(
                    new CodigoConfirmacaoEvent(cliente.Usuario.Id, cliente.Email.Endereco, cliente.Nome));
            }

            return(true);
        }