예제 #1
0
        public async Task <UsuarioDto> Executar(string codigoDre, long codigoUe, string cpf)
        {
            if (ValidacaoCpf.Valida(cpf) == false)
            {
                throw new NegocioException($"CPF inválido!");
            }

            var usuarioCoreSSO = await mediator.Send(new ObterUsuarioCoreSSOQuery(cpf));

            await mediator.Send(new ObterDadosAlunosPorDreUeCpfResponsavelQuery(codigoDre, codigoUe, cpf));

            var usuarioApp = await mediator.Send(new ObterUsuarioNaoExcluidoPorCpfQuery(cpf));

            var usuarioEol = await mediator.Send(new ObterDadosResumidosReponsavelPorCpfQuery(cpf));

            if (usuarioCoreSSO == null)
            {
                throw new NegocioException($"Este CPF não consta como responsável de um estudante ativo nesta Unidade Escolar.");
            }

            if (usuarioApp == null && usuarioCoreSSO != null)
            {
                throw new NegocioException($"O usuário {Formatacao.FormatarCpf(cpf)} deverá informar a data de nascimento de um dos estudantes que é responsável no campo de senha!");
            }

            return(new UsuarioDto(usuarioApp.Cpf, usuarioEol.Nome));
        }
        public async Task <RespostaApi> Executar(SolicitarReiniciarSenhaDto solicitarReiniciarSenhaDto)
        {
            if (ValidacaoCpf.Valida(solicitarReiniciarSenhaDto.Cpf) == false)
            {
                throw new NegocioException($"CPF inválido!");
            }

            var usuarioCoreSSO = await mediator.Send(new ObterUsuarioCoreSSOQuery(solicitarReiniciarSenhaDto.Cpf));

            await mediator.Send(new ObterDadosAlunosQuery(solicitarReiniciarSenhaDto.Cpf));

            var usuario = await mediator.Send(new ObterUsuarioPorCpfQuery(solicitarReiniciarSenhaDto.Cpf));

            if (usuario == null && usuarioCoreSSO != null)
            {
                throw new NegocioException($"O usuário {Formatacao.FormatarCpf(solicitarReiniciarSenhaDto.Cpf)} deverá informar a data de nascimento de um dos estudantes que é responsável no campo de senha!");
            }

            var usuarioEol = await mediator.Send(new ObterDadosResumidosReponsavelPorCpfQuery(solicitarReiniciarSenhaDto.Cpf));

            if (usuario.PrimeiroAcesso == true)
            {
                throw new NegocioException($"O usuário {Formatacao.FormatarCpf(solicitarReiniciarSenhaDto.Cpf)} - {usuarioEol.Nome} deverá informar a data de nascimento de um dos estudantes que é responsável no campo de senha!");
            }

            await mediator.Send(new ReiniciarSenhaCommand()
            {
                Id = usuario.Id, PrimeiroAcesso = true
            });

            var mensagemSucesso = $"A senha do usuário {Formatacao.FormatarCpf(usuario.Cpf)} - {usuarioEol.Nome} foi reiniciada com sucesso. No próximo acesso ao aplicativo o usuário deverá informar a data de nascimento de um dos estudantes que é responsável!";

            return(RespostaApi.Sucesso(mensagemSucesso));
        }